タイミングを維持し続ける場合、Net/HTTPを使用して長いステートメントを行うにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/8320315

  •  25-10-2019
  •  | 
  •  

質問

次のコードがあります。

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top