打开失败:
irb(main):001:0> require 'open-uri'
=> true
irb(main):002:0> open("http://www.google.com")
RuntimeError: Non-HTTP proxy URI:
from /usr/lib/ruby/1.8/open-uri.rb:203:in `open_http'
from /usr/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'
from /usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
from /usr/lib/ruby/1.8/open-uri.rb:162:in `catch'
from /usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
from /usr/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
from /usr/lib/ruby/1.8/open-uri.rb:518:in `open'
from /usr/lib/ruby/1.8/open-uri.rb:30:in `open'
from (irb):2
但是,wget()有效......
root@pierr-desktop:/work/web/yy# wget www.google.com
--2010-11-14 20:00:39-- http://www.google.com/
Resolving www.google.com... 72.14.203.104, 72.14.203.99
Connecting to www.google.com|72.14.203.104|:80... connected.
HTTP request sent, awaiting response... 302 Found
.........
2010-11-14 20:00:40 (47.7 KB/s) - `index.html' saved [9097]
我是否必须设置代理,但我不知道正确的代理信息..
答案 0 :(得分:5)
Open-URI从环境中选择代理(如果已设置),或者您可以在打开连接时定义代理,或者如果在环境中设置了代理,则禁用代理:
# The environment variables such as http_proxy, https_proxy and ftp_proxy
# are in effect by default. :proxy => nil disables proxy.
open("http://www.ruby-lang.org/en/raa.html", :proxy => nil) {|f|
# ...
}
此外,您的Ruby看起来很旧:/usr/lib/ruby/1.8/
。做ruby -v
如果不是至少1.8.7我建议安装RVM,然后用它来安装当前的Ruby(1.9.2)或至少最新的1.8版本(1.8.7) )。查看RVM Prerequisites页面,然后点击installation directions,包括有关修改帐户启动脚本的部分,然后阅读有关安装Ruby gems的部分。
我不建议通过yum或apt使用打包的Ruby。它们不会是最新的,似乎缺少我们期望从库存Ruby源安装的所有生物舒适。 RVM使所以易于安装和管理多个红宝石。
答案 1 :(得分:1)
如果您为系统定义了代理设置,则可以使用以下方法进行检查:
1-检查文件/etc/wgetrc
以查找http_proxy
配置参数:
2-使用:echo $HTTP_PROXY