<a href="http://d.hatena.ne.jp/rubyco/20070620/returnvalue">メソッドの戻り値</a>
Rubyでは、returnが書かれていないとき最後に実行した文の値が戻り値になります。def method "hello" if false end p method #=> nil上で、表示されるのがfalseではなくnilなのは、ifの条件式が成り立っていないときのif文の値はnilだから、と理解しました。最後に評価した式の値が戻り値なのではなく、最後に実行した文の値が戻り値と理解しました。仕様書がないので確かめることはできませんけれど。
というか、if節が必ずこけるので、methodメソッドの返す値がない(nil)なのではないでしょうか。この後のwhile節も。
極端な例。
def method end p method #=> nil def method2 "hello" "bye" if false end p method2 #=> nil
違うじゃん!rubycoの中の人が正しかった!
…まあ、ifだって評価式だという見方もできるからな(負け惜しみ