2014-12-04 2 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 :: (например, , 'когда Net :: HTTPSuccess')? –

+0

@PlatinumAzure - Правильно. Мне нужно будет использовать пространство имен. Как это сделать без пространства имен? – stack1

ответ

1

Это происходит потому, что HTTPSuccess не был инициализирован. Вместо этого попробуйте использовать Net::HTTPSuccessNet::HTTPRedirection).

Кроме того, измените ваше дело на case response.class. В ваших заявлениях, которые вы проверяете для равенства классов.

+0

Теперь я получаю эту ошибку - '24: uninitialized constant Net :: HTTPRedirect (NameError)'. – stack1

+0

Извините, это должно быть HTTPRedirection. Я обновлю свой ответ – jmera

+0

спасибо! Теперь работает. Код учебника был неправильным. – stack1

Смежные вопросы