タイミングを維持し続ける場合、Net/HTTPを使用して長いステートメントを行うにはどうすればよいですか?
質問
次のコードがあります。
require 'rubygems'
require 'net/http'
require 'uri'
url = URI.parse('http://servername.tld/up.txt')
response = Net::HTTP.get_response(url)
@yes = response.body
until @yes == "yes"
puts "It's down"
end
の内容 /up.txt
は
はい
ただし、タイミングを出し続けます(つまり、サーバーがホストしています up.txt
)これでダウンしています:
/home/jrg/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb644:in `initialize ':connection拒否 - connect(2)(errno ::サービス拒否)
関連していますが、助けにはなりませんでした:レールで「net/http」で「errno :: econnrefused」を取得するのはなぜですか?
以外のものを使用することを検討する必要がありますか? Net::HTTP
?
解決
救助ブロックに例外を投げている部分を置くだけです。
def up?(url)
begin
Net::HTTP.get_response(url).body == "yes"
rescue Errno::ECONNREFUSED
false
end
end
until up?(url)
puts "It's down"
end
他のヒント
あなたはオープンウリが好きかもしれません、それはずっときれいです:
require 'open-uri'
sleep 10 until response = open(url).read rescue nil
所属していません StackOverflow