On 6/7/07, W0rtex Indigo <indigo7333 / gmail.com> 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
>     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/