В RoR как получить код состояния при запросе веб-страницы через прокси?

Я использую Rails 4.2.7. Как получить код состояния при оформлении запроса? Я пытаюсь ниже

  uri = URI(url)
  content = nil
  status = nil
  content_type = nil
  res1 = Net::HTTP.SOCKSProxy('127.0.0.1', 50001).start(uri.host, uri.port) do |http|
    puts "launching #{uri.path}"
    resp = http.get(uri.path)
    status = resp.status
    content = resp.content
    content_type = resp['content-type']
  end

но это приводит к ошибке ниже. Я могу четко видеть его 403, но я хотел бы, чтобы это было красиво и аккуратно в переменной, или, по крайней мере, имелась какая-то ошибка, которую я могу уловить

Error during processing: undefined method `status' for #<Net::HTTPForbidden 403 Forbidden readbody=true>
/Users/davea/Documents/workspace/myproject/app/helpers/webpage_helper.rb:77:in `block in get_content'
/Users/davea/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:853:in `start'
/Users/davea/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:584:in `start'
/Users/davea/Documents/workspace/myproject/app/helpers/webpage_helper.rb:74:in `get_content'

1 ответ

Решение

Я думаю ты хочешь resp.code,

Один из способов выяснить это использовать pry драгоценный камень. После установки вы можете поставить binding.pry сразу после вашего http.get Выровняйте и запустите ваш код. Когда он попадает в строку вызова, он прекращает выполнение и открывает приглашение IRB, а затем вы можете поиграть с resp напрямую пробую разные вещи. Одна отличная особенность - вы можете cd resp и теперь "в" самом объекте. Тип ls и вы можете увидеть все доступные методы. Делает такие вещи гораздо проще.

Другие вопросы по тегам