"Мой сайт не работает?"Как - PullRequest
3 голосов
/ 05 ноября 2010

Какой лучший способ создать "Мой сайт не работает?" в рубине? Как мне это сделать, чтобы проверить это с помощью HTTP (s) и Ping?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

В основном просто используйте библиотеку 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

Возможно, вы можете заставить его не ждать тайм-аут и / или увеличить тайм-аут, чтобы избежать тайм-аута, чтобы избежать ложных срабатываний, но это простой пример.

2 голосов
/ 05 ноября 2010

(чит)

require 'uri'
require 'open-uri'
site = "http://stackoverflow.com/"
open("http://downforeveryoneorjustme.com/#{URI.parse(site).host}"){|f|f.read}["It's not just you!"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...