2016-04-28 2 views
0

Я все еще учусь рубин, и там, кажется, проблема с моим кодом, который я не могу понять,избежать печатать ответ «200», если условия в рубине

require 'net/http' 

File.open("html.txt", "r") do |file_handle| 
    file_handle.each_line do |server| 
    uri = URI(server) 
    res = Net::HTTP.get_response(uri) 
    if res.code != 200 
     puts " #{uri} => #{res.code}" 
    end 
    end 
end 

html.txt

http://stackoverflow.com 
http://google.com 
http://facebook.com 
http://serverfault.com 
http://twitter.com 

Я не хочу, чтобы распечатать Ури, который имеет ответ «200»

Но сейчас это то, что печатается:

http://stackoverflow.com => 200 
http://google.com => 302 
http://facebook.com => 302 
http://serverfault.com => 200 
http://twitter.com => 301 

Это мой ожидаемый результат:

http://google.com => 302 
http://facebook.com => 302 
http://twitter.com => 301 

Может кто-нибудь помочь мне с этим ..? заранее спасибо.

+0

'res.code' возвращает' String'. – cozyconemotel

ответ

3

Код ответа - это строка.

Вы должны использовать условие res.code != '200', обратите внимание на кавычки.

Ваш код должен выглядеть следующим образом:

require 'net/http' 

File.open("html.txt", "r") do |file_handle| 
    file_handle.each_line do |server| 
    uri = URI(server) 
    res = Net::HTTP.get_response(uri) 
    if res.code != '200' 
     puts " #{uri} => #{res.code}" 
    end 
    end 
end 
+0

thx Я отмечен вашими цитатами – fajarhide