`
hustzxq524
  • 浏览: 12709 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

在局域网内有proxy的情况下,如何使用gem和open-uri

阅读更多
我在局域网内,需要通过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自带的那个好些
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics