From: Minero Aoki Date: 2007-01-19T11:49:54+09:00 Subject: [ruby-dev:30148] Re: net/pop error in Ruby 1.9 青木です。 In mail "[ruby-dev:30126] net/pop error in Ruby 1.9" Masaki Suketa wrote: > 助田です。 > Net::POP3.start で NoMethodError がでます。 > $ ruby19 x.rb > /usr/local/lib/ruby/1.9/net/protocol.rb:66:in `closed?': \ > undefined method `closed?' for true:TrueClass (NoMethodError) たぶん YARV がマージされたときだと思いますが、lib/timeout.rb が 変更されていて、それが net/pop.rb に波及してました。YARV 前だと lib/timeout のコードは def timeout(sec, exception=Error) return yield if sec == nil or sec.zero? raise ThreadError, "timeout within critical session" if Thread.critical begin x = Thread.current y = Thread.start { sleep sec x.raise exception, "execution expired" if x.alive? } yield sec # return true となってて yield sec が返るんですが、YARV 後はコメントが解除されて いるので true が返ります。 どっちが正しいんでしょう。 # 1 行目との整合性を考えると、yield の結果が返ってきたほうが # いいと思うけど、ドキュメントは true を返すと言ってるなあ -- 青木峰郎