Мне поручили изменить существующий скрипт Ruby, но мои знания Ruby в лучшем случае базовые... Мне нужно добавить метод для проверки того, открыт ли порт сервера. если это так, сценарий должен возобновить выполнение того, что он делает. если нет, он должен выйти.
Я применил следующий метод, взятый из Ruby. порт открыт:
def is_port_open?
@host = "localhost"
@port = "8080"
begin
Timeout::timeout(1) do
begin
s = TCPSocket.new(@host, @port)
s.close
rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
return "port closed :("
end
end
rescue Timeout::Error
end
return "problem with timeout?"
end
Этот метод работает хорошо, за исключением случаев, когда возвращается «ноль», если порт открыт. Как подавить любой вывод (если нет ошибки)?
Заранее спасибо!
"problem with timeout?"
, если порт не закрыт. Что вы имеете в виду, говоря о возвращенииnil
? - person Ajedi32   schedule 08.01.2015