我在局域网内,需要通过proxy才能访问外网, 并且还需要用户认证。
刚才搞了半天,又是google又是看文档,最后还是看gem代码搞定的,真不容易,现在和大家share一下, 以备不时之需。
export HTTP_PROXY=http://user:password@www.proxy.com:1080
gem update
这里uri有些字符需要escape一下,建议用ruby的URI.escape处理一下
require 'uri'
URI.escape(raw_uri)
按照gem的帮助说的
gem update -p http://user:password@www.proxy.com:1080
总是提示
ERROR: While executing gem ... (NoMethodError)
undefined method `[]=' for #<Gem::ConfigFile:0xb73e5b18>
没看源码,不知道咋回事
然后是open-uri,原来一直以为不支持proxy需要认证的情况,后来发现原来rubygems/open-uri是支持的
require 'rubygems/open-uri'
open('www.google.cn',
:proxy_http_basic_authentication => ["http://proxy.foo.com:8000/", "proxy-user", "proxy-password"]
)
似乎这个open-uri应该取代ruby自带的那个好些
刚才搞了半天,又是google又是看文档,最后还是看gem代码搞定的,真不容易,现在和大家share一下, 以备不时之需。
export HTTP_PROXY=http://user:password@www.proxy.com:1080
gem update
这里uri有些字符需要escape一下,建议用ruby的URI.escape处理一下
require 'uri'
URI.escape(raw_uri)
按照gem的帮助说的
gem update -p http://user:password@www.proxy.com:1080
总是提示
ERROR: While executing gem ... (NoMethodError)
undefined method `[]=' for #<Gem::ConfigFile:0xb73e5b18>
没看源码,不知道咋回事
然后是open-uri,原来一直以为不支持proxy需要认证的情况,后来发现原来rubygems/open-uri是支持的
require 'rubygems/open-uri'
open('www.google.cn',
:proxy_http_basic_authentication => ["http://proxy.foo.com:8000/", "proxy-user", "proxy-password"]
)
似乎这个open-uri应该取代ruby自带的那个好些