プロジェクト

全般

プロフィール

致命的 #578

完了

ruby-2.0.0p0にてタイムラインが表示されない

ふぇのまー 葱野 さんが約11年前に追加. 約11年前に更新.

ステータス:
終了
優先度:
通常
対象バージョン:
-
開始日:
2013-03-17
期日:
進捗率:

0%

プラグイン名:

説明

ruby-2.0.0p0 + ruby-gtk2 1.2.3の環境にてタイムラインが一切表示されない。

net/httpライブラリの以下のような仕様変更により、2.0からは
TCPSocket.openの第3,4引数にローカルホストのホスト名とポート番号を渡す
ことが可能になった。

  • 1.9: TCPSocket.open(conn_address(), conn_port())
  • 2.0: sock = TCPSocket.open(conn_address, conn_port, @local_host, @local_port)

@local_hostと@local_portは通常デフォルトでnilが設定されている。
ここでresolv-replaceライブラリを使用すると、TCPSocketライブラリ
のリゾルバにrubyのResolvクラスを使用するようになるが、
Resolv::DNS::Name.createでは引数がnilの場合例外として処理される。

irb(main):003:0> Resolv::DNS::Name.create("hachune.net")
=> #<Resolv::DNS::Name: hachune.net>
irb(main):004:0> Resolv::DNS::Name.create(nil)
ArgumentError: cannot interpret as DNS name: nil
        from /usr/lib/ruby/1.9.1/resolv.rb:1144:in `create'
        from (irb):4
        from /usr/bin/irb:12:in `<main>'

よって、resolv-replaceライブラリをrequireした時点で@local_hostが未指定
(nilのまま)だと例外が発生し、core/lib/mikutwitter/connect.rbの
MikuTwitter::APIShortcuts.connectが異常終了する。

miku@hachune% ruby20 -r socket -e 'p TCPSocket.open("mikutter.hachune.net", 80, nil, nil)'                         
#<TCPSocket:fd 5>
miku@hachune% ruby20 -r socket -r resolv-replace -e 'p TCPSocket.open("mikutter.hachune.net", 80, nil, nil)'
/usr/ruby20/lib/ruby/2.0.0/resolv.rb:1176:in `create': cannot interpret as DNS name: nil (ArgumentError)
        from /usr/ruby20/lib/ruby/2.0.0/resolv.rb:1022:in `generate_candidates'
        from /usr/ruby20/lib/ruby/2.0.0/resolv.rb:1047:in `resolv'
        from /usr/ruby20/lib/ruby/2.0.0/resolv.rb:513:in `each_resource'
        from /usr/ruby20/lib/ruby/2.0.0/resolv.rb:406:in `each_address'
        from /usr/ruby20/lib/ruby/2.0.0/resolv.rb:115:in `block in each_address'
        from /usr/ruby20/lib/ruby/2.0.0/resolv.rb:114:in `each'
        from /usr/ruby20/lib/ruby/2.0.0/resolv.rb:114:in `each_address'
        from /usr/ruby20/lib/ruby/2.0.0/resolv.rb:92:in `getaddress'
        from /usr/ruby20/lib/ruby/2.0.0/resolv.rb:43:in `getaddress'
        from /usr/ruby20/lib/ruby/2.0.0/resolv-replace.rb:10:in `getaddress'
        from /usr/ruby20/lib/ruby/2.0.0/resolv-replace.rb:22:in `initialize'
        from -e:1:in `open'
        from -e:1:in `<main>'

他の形式にエクスポート: Atom PDF