2016-09-17 11 views
0

레일 4.2.7을 사용하고 있습니다. 요청할 때 상태 코드를 얻으려면 어떻게해야합니까? 나는 아래를 시도하고있다RoR에서 프록시를 통해 웹 페이지를 요청할 때 상태 코드를 얻으려면 어떻게해야합니까?

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 

그러나 아래의 오류가 발생합니다. 내가

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' 

답변

0

을 잡을 수 나는 분명 그에게 (403)를 볼 수 있지만 변수 내에서 그 좋은 깔끔한하고 싶은, 또는 적어도 어떤 종류의 오류가 나는 당신이 resp.code을 원하는 생각합니다.

한 가지 방법은 pry 보석을 사용하는 것입니다. 설치가 완료되면 http.get 행 바로 뒤에 binding.pry을 입력하고 코드를 실행할 수 있습니다. pry 라인에 도달하면 실행을 멈추고 IRB 프롬프트를 열고 다른 것들을 직접 시도하여 resp으로 놀 수 있습니다. 정말 멋진 기능 중 하나는 cd resp이며 지금은 객체 자체에 있습니다. ls을 입력하면 사용 가능한 모든 방법을 볼 수 있습니다. 이런 종류의 것을 쉽게 이해할 수 있습니다.