Ошибка Ruby open_uri nometoderror: неопределенный метод `strip’ для 10: Fixnum

#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
  

OpenURI пытается выполнить strip значение

Ответ №2:

Кажется, он возражает против того, чтобы ключ был строкой. Попробуйте превратить ‘read_timeout’ в символ:

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

Я мог бы повторить вашу ошибку с помощью ‘read_timeout’, но изменение ее на символ все равно исправило ее здесь.