Twitter::Streaming で EADDRNOTAVAIL 発生!!

1448434048_application-x-ruby.png
Rubyで「Twitter::Streaming」を使うとこんなエラーが出た

/usr/local/lib/ruby/gems/2.2.0/gems/twitter-5.15.0/lib/twitter/streaming/connection.rb:16:in `initialize’: Can’t assign requested address – connect(2) for “199.59.148.138” port (Errno::EADDRNOTAVAIL)
from /usr/local/lib/ruby/gems/2.2.0/gems/twitter-5.15.0/lib/twitter/streaming/connection.rb:16:in `new’
from /usr/local/lib/ruby/gems/2.2.0/gems/twitter-5.15.0/lib/twitter/streaming/connection.rb:16:in `stream’
from /usr/local/lib/ruby/gems/2.2.0/gems/twitter-5.15.0/lib/twitter/streaming/client.rb:119:in `request’
from /usr/local/lib/ruby/gems/2.2.0/gems/twitter-5.15.0/lib/twitter/streaming/client.rb:58:in `sample’

EADDRNOTAVAILっていうエラーの意味は知らないが、とにかくスゴイやつだ!
って事で、エラー箇所を見るとconnection.rbでエラーが出てるんだな。
マジかよ〜、ライブラリのバグかよぉ~・・・
gem install したtwitterのVerは5.15.0。これが最新でしょ?
古いVerにしないといけないのかな?
で、調べた。
GitHub
t stream timeline: connection refused #287

https://github.com/sferik/t/issues/287
 →「fix mentioned in this thread: [#286 (comment)]」
  ↓
GitHub
t steam timeline error #286

https://github.com/sferik/t/issues/286#issuecomment-153067380
 →「Ah. Here’s the real issue. There’s a fix documented here, it’s a small change to lib/twitter/streaming/connection.rb.」
  ↓
GitHub
determine port from uri scheme, closes #709

https://github.com/animeavi/twitter/commit/6d08c5932d3033d5b69537730e02ac5905775410
キターーーッ!!!!
これかっ!?これかっ!!?これなのかっ!!!?
ってか、まだリリースされてないのか?
自分で書き直すのはいいんだけど、これだけ書き直せばいいのかな?
他に関係しているソースに影響出ないのかな?
まぁいいや、まずはconnection.rbを書き直してみよう。(当然原本のバックアップは取っておく)
書き直してから自分のプログラムを実行したらすんなり動いた。
ヤッターー!!
◆gem install した twitter のバージョンの確認

 $ gem list twitter
 *** LOCAL GEMS ***
 twitter (5.15.0)

◆emacsで読み取り専用を解除するには

 C-x C-q

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。