補足:<a href="http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%87%E3%82%A3%E3%82%AA%E3%83%A0" target="_blank">イディオム</a>
Rubyにはイディオムがたくさん。
・empty!やempty?など、メソッド名に感嘆符や疑問符が吹かされているメソッド
→それぞれ、破壊的メソッド(レシーバに対してなんらかの破壊的処理を行う)、述語メソッド(何らかの条件に基づいてtrueまたはfalseの審議地を返すをあらわす
・a || b
式a || bでは、aが評価され、falseまたはnilでない場合にbが評価される。
最初の値が設定されていない場合にデフォルト値を返す方法として、よく使用される。
・a ||= b
代入文では、さまざまな演算子に共通する省略記法がサポートされている。 a op= b はa = a op bと等価。他には…
count += 1 # count = count + 1 と同じ price *= discount # price = price * discount と同じ count ||= 0 # count = count || 0 と同じ
最後の文は、初期値設定に使用できる。
・obj = self.new
次のように、クラスメソッド内でそのクラスのインスタンスを作成する必要がある場合がある。
class Person < ActiveRecord::Base
def self.for_dave
Person.new(:name => 'Dave')
end
end
別の開発者がサブクラスを作成する。
class Employee < Person #.. end
この場合、for_daveはPersonが返ってきてしまう。代わりにself.newを記述することで、レシーバのクラス自体の新しいオブジェクト(ここではEmployee)を返すようにできる。
・require File.dirname(__FILE__)+'/../test_helper'
Rubyのrequireメソッドは、外部のソースファイルをアプリケーションにロードする。
requireが通常の形式で使われた場合、Rubyは、LOAD_PATHのディレクトリリストで指定されている各ディレクトリを順次検索してロード対象のファイルを見つける。
上記のように、require の後に相対パス指定でターゲットを示す絶対パスを構築できる。