论坛首页 编程语言技术论坛

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

浏览 3505 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-03  
我在局域网内,需要通过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