require ‘socket’
require ‘timeout’
def ping( host, service = “echo”,timeout = 2)
begin
timeout( timeout ){
TCPSocket.open( host, service){}
}
rescue Errno::ECONNREFUSED
true
rescue false
else true
end
end
p ping(ARGV[0] || “google.ru”)
When host is down i got error:" ping:10:in `ping’: class or module
required for rescue clause (TypeError) from ping:14"
when host is alive i’ve got true
Can you help me please!
On 6/7/07, W0rtex Indigo [email protected] wrote:
else true
end
end
p ping(ARGV[0] || “google.ru”)
When host is down i got error:" ping:10:in `ping’: class or module
required for rescue clause (TypeError) from ping:14"
when host is alive i’ve got true
Can you help me please!
It’s complaining about
rescue false
Maybe something like:
def ping( host, service = “echo”,timeout = 2)
begin
timeout( timeout ){
TCPSocket.open( host, service){}
}
rescue Exception => ex
# handle any expected exceptions
case ex
when Errno::ECONNREFUSED
return false
when Timeout::Error
return false
else
# pass the buck
raise ex
end
end
true
end
Doing a ping by connecting is rather heavyweight though.
–
Rick DeNatale
My blog on Ruby
http://talklikeaduck.denhaven2.com/
On 07.06.2007 17:14, W0rtex Indigo wrote:
require ‘socket’
require ‘timeout’
def ping( host, service = “echo”,timeout = 2)
begin
timeout( timeout ){
TCPSocket.open( host, service){}
}
rescue Errno::ECONNREFUSED
true
rescue false
^^^^^ this is not a class.
Either put a class here or nothing.
else true
end
end
p ping(ARGV[0] || “google.ru”)
When host is down i got error:" ping:10:in `ping’: class or module
required for rescue clause (TypeError) from ping:14"
when host is alive i’ve got true
Can you help me please!
The question is, what do you want to achieve?
Kind regards
robert