Techioz Blog

Ruby Net::OpenTimeout: 実行期限が切れました

概要

私のマシン上の複数のホストで常にこのエラーが発生します。例:

require 'open-uri'
open('https://google.com').read


Net::OpenTimeout: execution expired
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:904:in `initialize'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:904:in `open'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:904:in `block in connect'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/timeout.rb:103:in `timeout'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:902:in `connect'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:887:in `do_start'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:876:in `start'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:323:in `open_http'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:741:in `buffer_open'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:212:in `block in open_loop'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:210:in `catch'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:210:in `open_loop'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:151:in `open_uri'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:721:in `open'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:35:in `open'
    from (irb):3
    from /usr/local/opt/rbenv/versions/2.4.0/bin/irb:11:in `<main>'

他のものでは起こらない

open('https://twitter.com').read

rbenv の Ruby 2.4.0 および macOS 10.12.3。 macOS のシステム バージョンである Ruby 2.0.0 でもテストされました。

エラーは発生せず、curl または Node のリクエストを使用すると期待どおりの結果が得られます。つまり、これはブロックされたホストではなく、私の IP もブロックされていません。

Rubyを再インストールし、マシンを再起動しようとしましたが、問題はまだ発生します。

何かヒントはありますか?

解決策

Ruby が DNS を解決する方法に問題があるようです。

require ‘resolv-replace’ が追加され、すぐに接続が開かれるようになりました。

出典: https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://stackoverflow.com/a/27485369/116925 https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://github.com/ruby/ruby/pull/597#issuecomment-40507119