[Ruby] MechanizeでEOFError?
こんにちわ。ばたっちです。
WWW::Mechanizeでサイトを巡回していて、EOFErrorになることがあったので覚書。
エラーの内容は以下のとおり。
/usr/lib/ruby/1.8/net/protocol.rb:133:in `sysread': \ end of file reached (EOFError) from /usr/lib/ruby/1.8/net/protocol.rb:133:in `rbuf_fill' from /usr/lib/ruby/1.8/timeout.rb:56:in `timeout' from /usr/lib/ruby/1.8/timeout.rb:76:in `timeout' from /usr/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill' from /usr/lib/ruby/1.8/net/protocol.rb:116:in `readuntil' from /usr/lib/ruby/1.8/net/protocol.rb:126:in `readline' from /usr/lib/ruby/1.8/net/http.rb:2017:in `read_status_line' from /usr/lib/ruby/1.8/net/http.rb:2006:in `read_new' from /usr/lib/ruby/1.8/net/http.rb:1047:in `request' from /usr/lib/ruby/gems/1.8/gems/mechanize-0.6.10/lib/\ mechanize.rb:514:in `fetch_page' from /usr/lib/ruby/gems/1.8/gems/mechanize-0.6.10/lib/\ mechanize.rb:185:in `get' from test.rb:19正確なパターンは分からないのですが、以下のようにJavaScriptファイルの取得前後でエラーになるようでした。
- 「http://~/test1.html」のように最初のページをGETする
- 相対パス指定で次のページをGETする (A)
- 相対パス指定でJavaScriptをGETする
- backメソッドで履歴を戻る
- 相対パス指定で(A)のページなどを再GETする
直接関係あるかは分かりませんが、気になった点は次のとおり。
- サーバがIIS
- Content-Typeが「application/x-javascript」(通常は text/javascript)
原因がはっきりしないので気持ち悪いですが、とりあえずうまく行きました。(^^)v
同じような現象に会った人いるかな?