ruby2.4.0で環境変数no_proxyを設定していると IPAddr::InvalidAddressError: invalid address
2017-07-11 | カテゴリ >> Ruby

いまやってる開発で、pay.jpを使っているのですが、たまに
「予期せぬエラー」
という謎のエラーを吐いてpay.jpと通信できない事象が発生していて、
それが発生するのは自分のVagrant上にいるCentOSだけでした。。

ライブラリの中身をかっさばいてガチャガチャやってたら、どうもpay.jpのライブラリが使ってるrestclientの更に中の方で ipaddrが呼ばれており、
IPAddr::InvalidAddressError: invalid address
が発生しているようでした。

全く意味が分かりませんでした。

ipaddrの中身を眺めてたら、どうも環境変数の
no_proxyをチェックしてる最中にErrorがraiseされていたので、あえて外してみたら動きました。

もうここに至るまで、すっごいハマった〜〜〜〜(ヽ´ω`)

ただ、この端末はVagrant上で動かしている開発機なので
no_proxyを設定してあげないとSeleniumがlocalhostへのアクセスをするのにもproxyに聞きに行って
timeoutしてしまうというジレンマが。

他の人は大丈夫なのだろうか。。?と思って検索しまくると、それらしきブログを発見

Proxy Error On Ruby 2.4.0

要約

つまり、こういう事だそうです。

この問題の対象かどうかは

$ http_proxy=http://127.0.0.1 no_proxy=192.0.2.2  ruby -ropen-uri -e 'open("http://example.org")'

を打ってみると以下のエラーが上がるので分かるそう。
/${home}/.rbenv/versions/2.4.1/lib/ruby/2.4.0/ipaddr.rb:565:in `in6_addr’: invalid address (IPAddr::InvalidAddressError)

で、この修正パッチは受け入れられたっぽいんですが、まだリリースされていないとの事。
ちなみに自分の環境では2.4.1でしたが未だこのエラーは発生していました

ので、暫定でこの問題を回避してくれるgemを作ってくれておりました。
https://github.com/ermaker/no_proxy_fix

普通に bundle install したら解決しました!!やった!!

おわり
 

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn
2017-07-11 | カテゴリ >> Ruby 

関連記事

Comment





Comment



*