こんにちは。
Ruby の open-uri は、環境変数のプロクシ情報を使ってくれますが、パスワード認証付きプロクシ情報 proxy_http_basic_authentication を付けると(下記のusername:password
)、エラーと見なすポリシーのようです1 2。
$ env |grep proxy
http_proxy=http://username:password@proxy.example.com:8080
ftp_proxy=http://username:password@proxy.example.com:8080
https_proxy=http://username:password@proxy.example.com:8080
エラーを起こさせず、さらにそれらの情報も使って欲しい場合は、自己責任でパッチを当てる必要があるようです3 4。
--- /usr/lib/ruby/2.0.0/open-uri.rb.orig
+++ /usr/lib/ruby/2.0.0/open-uri.rb
@@ -253,6 +253,10 @@
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_uri = URI.parse("#{proxy_uri.scheme}://#{proxy_uri.host}:#{proxy_uri.port}")
+ end
raise "Non-HTTP proxy URI: #{proxy_uri}" if proxy_uri.class != URI::HTTP
end
-
「open-uriで環境変数http_proxyを使うときに認証付きのProxyが使えません」を見ますと、提案が拒絶されているようです。 ↩
-
「認証Proxy環境やBasic認証ページにopen-uriでアクセスする」にも同じ話題をみつけました。 ↩
-
homebrew(の search コマンドなど)の利用でも、このエラー回避のために、このような対策が必要になってきます。 ↩
-
MacOSX 10.11 では System Integrity Protection による保護対象なので、パッチ作業はそれを無効化する必要があります。 ↩