2014-12-04 3 views
1

나는이 튜토리얼에서 일부 루비 HTTP 요청 응답 코드를 배우려고 노력하고 있어요 -초기화되지 않은 상수 HTTPSuccess (나가서 설명하자면 NameError)

http://danknox.github.io/2013/01/27/using-rubys-native-nethttp-library/

코드까지 -

require "net/http" 
require "uri" 

uri = URI.parse("http://api.random.com") 
http = Net::HTTP.new(uri.host, uri.port) 

# Continuing our example from above 

request = Net::HTTP::Get.new("/search?question=somequestion") 
response = http.request(request) 

# response.code 
# response.body 

case response 
when HTTPSuccess 
    response.body 
when HTTPRedirect 
    follow_redirect(response) # you would need to implement this method 
else 
    raise StandardError, "Something went wrong :(" 
end 

오류 -

Test.rb:16: uninitialized constant HTTPSuccess (NameError) 

이 문제에 대한 유일한 스택 오버플로 게시물을 보았습니다. 도와주지 않았어. 왜 이런 일이 일어날 수 있습니까?

+3

이 설명서 (http://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTPSuccess.html)에 따라 Net 접두어가 필요할 수도 있습니다 (예 : ,'When Net :: HTTPSuccess')? –

+0

@PlatinumAzure - 수정하십시오. 나는 네임 스페이스를 사용해야 할 것이다. 네임 스페이스없이이 작업을 수행하는 방법은 무엇입니까? – stack1

답변

1

HTTPSuccess이 초기화되지 않았기 때문에이 현상이 발생합니다. 대신 Net::HTTPSuccess (및 Net::HTTPRedirection)을 사용해보세요.

또한 사례 명세서를 case response.class으로 변경하십시오. 귀하의 when 문에서 클래스 평등을 검사하고 있습니다.

+0

이제이 오류가 발생합니다 -'24 : 초기화되지 않은 상수 Net :: HTTPRedirect (NameError)'. – stack1

+0

죄송합니다. HTTPRedirection이어야합니다. 내 대답을 – jmera

+0

고맙습니다! 그 지금 일하고있어. 자습서 코드가 잘못되었습니다. – stack1

관련 문제