#ruby-on-rails #ruby #open-uri
#ruby-on-rails #ruby #open-uri
Вопрос:
Когда я использую это, все в порядке:
html = open("http://" self.url).read
Но когда я добавляю пользовательский агент:
html = open("http://" self.url, "User-Agent" => "Ruby", 'read_timeout' => 10 ).read
Я получаю:
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'
Что здесь не так?
Ответ №1:
Передать 10
как строку, а не целое значение
html = open("http://" self.url, "User-Agent" => "Ruby", 'read_timeout' => '10' ).read
Ответ №2:
Кажется, он возражает против того, чтобы ключ был строкой. Попробуйте превратить ‘read_timeout’ в символ:
html = open("http://" self.url, "User-Agent" => "Ruby", read_timeout: 10 ).read
Я мог бы повторить вашу ошибку с помощью ‘read_timeout’, но изменение ее на символ все равно исправило ее здесь.