Как бы я сделал оператор while с net / http, если он истекает? - PullRequest
1 голос
/ 30 ноября 2011

У меня есть следующий код:

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.rb: 644: in `initialize ': соединение отклонено - connect (2) (Errno :: ECONNREFUSED)

Связано, но не помогло: Почему я получаю «Errno :: ECONNREFUSED» с «net / http» в Rails?

Нужно ли использовать что-то отличное от Net::HTTP?

Ответы [ 2 ]

9 голосов
/ 30 ноября 2011

Просто поместите часть, которая вызывает исключение, в блок восстановления.

2 голосов
/ 30 ноября 2011

Вам может понравиться open-uri, он намного аккуратнее:

require 'open-uri'
sleep 10 until response = open(url).read rescue nil
...