2010-11-14 27 views
4

ouvert a échoué:ouverte ("http://www.google.com ') a échoué, mais fonctionne wget

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 

Mais, wget() fonctionne ...

[email protected]:/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] 

Dois-je de mettre en place la procuration, mais je ne sais pas les informations de proxy correct ..

Répondre

5

ouvert URI prend proxy de l'environnement si elle est définie là, ou vous pouvez définir lorsque vous ouvrez la connexion , ou même désactiver proxy si elle est définie dans l'environnement:

# 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| 
    # ... 
} 

See Open-URI Documentation

en outre, votre Ruby semble être vieux: /usr/lib/ruby/1.8/. Ne ruby -v et si ce n'est pas au moins 1.8.7, je recommande d'installer RVM, puis de l'utiliser pour installer un Ruby actuel (1.9.2) ou au moins la dernière version 1.8 (1.8.7). Vérifiez la page RVM Prerequisites, puis suivez le installation directions, y compris les parties sur la modification du script de démarrage de votre compte, puis lisez la partie concernant l'installation de Ruby gems.

Je ne recommande pas d'utiliser un emballage Ruby via yum ou apt. Ils ne vont pas être récents et semblent manquer tous les conforts de créature que nous attendons d'une installation source de stock Ruby. RVM rend donc facile à installer et gérer plusieurs rubis.

1

Si vous avez un des paramètres de proxy définis pour votre système, vous pouvez le vérifier en utilisant:

1- Vérifiez le fichier /etc/wgetrc pour le paramètre de configuration http_proxy:

2- Vérifiez la variable d'environnement en utilisant: echo $HTTP_PROXY

+0

la http_proxy est vide. wget peut fonctionner sans paramètre proxy. – pierrotlefou

+0

Ainsi, votre système devrait fonctionner sans proxy. Essayez de définir des paramètres de proxy vides dans votre application. – Khaled