在局域网内有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自带的那个好些
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值