Если под "сайтом" вы подразумеваете сайт, то я бы не стал использовать ping. Ping сообщит вам, работает ли хост (если маршрутизатор или брандмауэр не блокирует ICMP), но не сообщит, правильно ли реагирует ваш веб-сервер или веб-приложение.
В таком случае я бы порекомендовал Net :: HTTP из стандартной библиотеки или любой другой библиотеки HTTP. Один из способов сделать это:
def up?(site)
Net::HTTP.new(site).head('/').kind_of? Net::HTTPOK
end
up? 'www.google.com' #=> true