gingaと申します。

Ruby1.8.7およびRuby1.9において、
String#linesはString#each_lineの別名メソッドであると認識していましたが、
Fileオブジェクトをレシーバにし、ブロック付きでメソッドを呼び出すと、挙動
が異なるようです。

例えば、以下のテキストファイルがあり、
--test.txt--------------------
aa
bb
cc
------------------------------

以下のスクリプトを実行すると、
--test.rb---------------------
File.open("test.txt") { |f|
  f.each_line {|line| print line }
}
------------------------------

  # => aa
  # => bb
  # => cc
と出力されますが、

--test1.rb---------------------
File.open("test.txt") { |f|
  f.lines {|line| print line }
}
------------------------------

では、出力されません。

このちがいは、仕様なのでしょうか。
お分かりになる方、お教えください。

なお、
String#bytesとString#each_byte、
String#charsとString#each_charでも、
同様の挙動のちがいがあります。

実行環境は、
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]
ruby 1.9.1 (2008-12-30 patchlevel-0 revision 21203) [i386-mswin32]
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-linux]
です。
よろしくお願いします。