В основном просто используйте библиотеку http, чтобы увидеть, сможете ли вы (на самом деле, HEADing лучше) страницу, на которую они указывают. Если вы получили ответ, значит, сервер работает, в противном случае (он не отвечает или истекло время ожидания) он не работает, и вы соответственно предупреждаете пользователя.
Это не самый чистый способ сделать это, но в основном:
require 'net/http'
require 'uri'
def isUp( url )
uri = URI.parse( url )
begin
Timeout::timeout(5) {
Net::HTTP.start( uri.host, uri.port ) { |http|
http.head( uri.path )
}
}
rescue Timeout::Error
return false
end
return true
end
Возможно, вы можете заставить его не ждать тайм-аут и / или увеличить тайм-аут, чтобы избежать тайм-аута, чтобы избежать ложных срабатываний, но это простой пример.