自分、Proxy の認証ユーザー名に "@" 挟んでるんで、環境変数 http_proxy にプロキシ設定する時に @
を%40
に置きかえて設定してます。すると良く見る open-uri.rb のパッチを当てただけだとやっぱりダメで
open-uri.rb.patch
--- lib/ruby/2.2.0/open-uri.rb.orig
+++ lib/ruby/2.2.0/open-uri.rb
@@ -254,6 +254,12 @@
def OpenURI.open_http(buf, target, proxy, options) # :nodoc:
if proxy
proxy_uri, proxy_user, proxy_pass = proxy
+ if proxy_uri.userinfo
+ proxy_user, proxy_pass = proxy_uri.userinfo.split(':')
+ proxy_user = URI.decode proxy_user
+# proxy_pass = URI.decode proxy_pass
+ proxy_uri = URI.parse(proxy_uri.scheme + '://' + proxy_uri.host + ':' + proxy_uri.port.to_s)
+ end
raise "Non-HTTP proxy URI: #{proxy_uri}" if proxy_uri.class != URI::HTTP
end
URI.decode が必要でした。password 側の decode はやりすぎかなとも思うけど、必要な人もいるよね、きっと。パスワードに '@' とか ':' とか付けたいよね。でも他の多くの場所で破滅しそう。
password 側の decode は試してないので確認してみてください。