第4章
$ rails console (or rails c)
Rails コンソールを起動
- デフォルトでは開発 (development) 環境で立ち上がる
- コメントは "#" から始まる
#{}
式展開
- puts を使用して出力すると、改行文字 (¥n) が自動的に末尾に追加される
- print を使用して出力すると、改行文字が追加されない
- ダブルクォートもシングルクォートも同じ文字列を表現するが、シングルクォートの中では式展開は行われない
- ダブルクォートでは式展開されるので # をバックスラッシュでエスケープする必要がある
- シングルクォートは入力した文字をエスケープせずに「そのまま」保持するときに便利
- オブジェクトは何をするか?オブジェクトとはメッセージに応答するもの
- メッセージ = メソッド
- メソッドの末尾に ? を付けることで、論理値(boolean) を返すことを示す
- nil もオブジェクト
- オブジェクトのうち、論理値が false になるのは false と nil
- 0 も true
- 関数は暗黙の戻り値を持つ。これは、最後に評価された式の値が自動的に返されることを意味する
- モジュールは関連したメソッドをまとめる
- クラスに include することでミックスインできる
- 配列の内容を変更したい場合は、破壊的メソッドを使用する
- 配列にはさまざまな共存させることができる
- ブロック
- ハッシュは並び順が保証されていない
- Ruby 1.9 ではハッシュの順序が入力順と同じであることを保証しているが、ハッシュを特定の順序に依存してカウントさせるべきではない
- キーと値はハッシュロケット(=>)によって表現する
- ハッシュのキーはシンボルを使うのが普通
user = { "first_name" => "ka", "last_name" => "be" }
user = { :first_name => "ka", :last_name => "be" }
user = { first_name: "ka", :last_name: "be" }
Ruby 1.9 から
- Rails でよく使われているハッシュの使用法
params = {} # 'params' というハッシュを定義する ('parameters' の略)。
params[:user] = { name: "Michael Hartl", email: "mhartl@example.com" }
=> {:name=>"Michael Hartl", :email=>"mhartl@example.com"}
params
=> {:user=>{:name=>"Michael Hartl", :email=>"mhartl@example.com"}}
params[:user][:email]
=> "mhartl@example.com"
- ハッシュの each メソッドでは、ブロックの変数がキーと値になっている
- オブジェクトを表現する文字列を返す便利メソッド inspect
- p メソッド = inspect メソッド + puts メソッド
irb(main):010:0> p :name
:name
=> :name
irb(main):011:0> puts :name
name
=> nil
irb(main):012:0> puts :name.inspect
:name
=> nil
- Ruby は関数呼び出し時に丸かっこの省略可能
- ハッシュが関数呼び出しの最後の引数である場合、波かっこの省略可能
[1] pry(main)> def func(a, b)
[1] pry(main)* p a
[1] pry(main)* p b
[1] pry(main)* end
=> nil
[2] pry(main)> func('hoge', :a => 'fuga')
"hoge"
{:a=>"fuga"}
=> {:a=>"fuga"}
- シンボルにハイフンを使用できない
- ハッシュでハイフンを含むキーを設定する場合、ハッシュロケット記法を使用する
- Ruby はプログラム内の改行の有無に左右されない
- ハッシュのコンストラクタ (Hash.new) はデフォルト値を引数に取る(キーが存在しない場合のデフォルト値になる)
- メソッドがクラス自身に対して呼び出される => クラスメソッド
- インスタンスに対して呼び出すメソッド => インスタンスメソッド
- superclass メソッドでクラス階層を調べられる
- クラスの中では self はオブジェクト自身を指す
- Ruby では組み込みの基本クラスの拡張が可能
- 大いなる力には大いなる責任が伴います <= スパイダーマンの名台詞
- Rails コンソールは、セッションごとにローカルの Rails 環境を読み込む
- だから、コンソール内でコントロールを作成したりできる
- Rails のアクションには戻り値がない(返される値は重要ではない)
- home アクションは Web ページを作成するもの(値を返すものではない)
- コントローラーのインスタンス変数はビューで自動的に使えるようになる
- インスタンス変数は @ から始まり、未定義の場合は nil
require './example_user'
でカレントディレクトリから example_user ファイルを探す