From: takkanm@... Date: 2009-10-13T22:32:14+09:00 Subject: [ruby-dev:39479] 一度IO::reopenしたファイルに対して同一ファイルでIO::reopenしたときの挙動について ミムラ aka takkanm です。 rubyspec(./core/io/reopen_spec.rb +114)で落ちている IO::reopen の挙動が 意図しているものかがわからないので、質問させてください。 1.8 と 1.9 で、一度IO::reopenしたファイルに対して、同一ファイルで IO::reopenしたときの挙動が異なるのですが、これは意図したものでしょうか? 1.8 で再reopenした後 gets を行なうと先頭行が読みこまれるのですが、 1.9 では nil が返ってきます。 % cat file1.txt line 1 line 2 line 3 line 4 % cat file2.txt Line 1 Line 2 Line 3 Line 4 % ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9] % irb irb(main):001:0> RUBY_VERSION => "1.8.7" irb(main):002:0> f1 = File.open "file1.txt" => # irb(main):003:0> f2 = File.open "file2.txt" => # irb(main):004:0> f1.reopen f2 => # irb(main):005:0> f1.gets => "Line 1\n" irb(main):006:0> f1.gets => "Line 2\n" irb(main):007:0> f1.reopen(f2).gets => "Line 1\n" irb(main):008:0> quit % rvm use 1.9.2 --rev head % ruby -v ruby 1.9.2dev (2009-10-06 trunk 25243) [i386-darwin9.8.0] % irb ruby-1.9.2-head > RUBY_VERSION => "1.9.2" ruby-1.9.2-head > f1 = File.open "file1.txt" => # ruby-1.9.2-head > f2 = File.open "file2.txt" => # ruby-1.9.2-head > f1.reopen f2 => # ruby-1.9.2-head > f1.gets => "Line 1\n" ruby-1.9.2-head > f1.gets => "Line 2\n" ruby-1.9.2-head > f1.reopen(f2).gets => nil 以上、よろしくお願いいたします。