Actions
Bug #3830
closedruby 1.9.2 で Net::Telnet の close が undefined method となり実行できない
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]
Backport:
Description
=begin
濱野と申します。
ruby-list:47391 からはじまるスレッドで尋ねた Ruby 1.9.2-p0 における
Net::Telenet の不具合について報告させて頂きます。
ruby-1.9.2-p0 で Net::Telnet クラスを使っていたところ、close を実
行しようとしたところ、undefined method と言われる現象に遭遇しまし
た。
ruby-list で尋ねたところ、原因は、SimpleDelegator をやめてしまった
ので @sock に委譲していたメソッドが使えなくなってしまったためとの
回答を頂きました。
申し分けありませんが、この件について、ご対応願えないでしょうか。
以下、もう少し詳細に書きます。
[再現方法]
以下のプログラムを、「IP アドレス」に適切な値を入れ、ruby-1.9.2-p0 で実
行する。
#!/usr/bin/env ruby require 'net/telnet' connect = Net::Telnet.new("Host" => "IP アドレス", "Timeout" => 120) print "closing ..." connect.close() print "done\n" # t.rb ends here
[結果]
ruby 1.9.2-p0 で行った場合の結果です。
$ lsb_release -d Description: Debian GNU/Linux unstable (sid) $ ruby-192 -v ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux] $ ruby-192 /tmp/t.rb closing .../tmp/t.rb:8:in `': undefined method `close' for # (NoMethodError)
[期待する結果]
ruby 1.8.7 で行った場合の結果です。
$ ruby -v ruby 1.8.7 (2010-08-16 patchlevel 302) [i486-linux] $ ruby /tmp/t.rb closing ...done
[暫定的な解決策]
以下のコードをプログラムに追加する事で、ruby-1.9.2-p0 でも期待する結果
を得られました。
require 'net/telnet' class Net::Telnet def method_missing(m, *args, &block) @sock.__send__(m, *args, &block) end end
=end
Files
Actions
Like0
Like0Like0