2016-10-18 3 views
0

Quand j'utilise ce que tout va bien:Ruby erreur open_uri NoMethodError: méthode non définie bande » pour 10: Fixnum

html = open("http://"+self.url).read 

Mais quand j'ajoute un agent utilisateur:

html = open("http://"+self.url, "User-Agent" => "Ruby", 'read_timeout' => 10).read 

Je reçois:

NoMethodError: undefined method `strip' for 10:Fixnum 
    from /Users/a_user/.rbenv/versions/2.2.3/lib/ruby/2.2.0/net/http/header.rb:17:in `block in initialize_http_header' 

Qu'est-ce qui ne va pas ici?

Répondre

2

passe 10 sous forme de chaîne non valeur entière

html = open("http://"+self.url, "User-Agent" => "Ruby", 'read_timeout' => '10').read 

OpenURI tente d'exécuter strip sur la valeur

-1

Il semble qu'il oppose à la clé étant une chaîne. Essayez d'activer « read_timeout » un symbole:

html = open("http://"+self.url, "User-Agent" => "Ruby", read_timeout: 10).read 

je pourrais reproduire votre erreur avec le « read_timeout », mais le changement à un symbole fixe ici de toute façon.