何も考えずにダウンロードする場合は,open-uriを使う.

require 'open-uri'
def get_open_uri
begin
f = open( 'http://www.yahoo.co.jp' )
rescue
puts "Error"
else
puts f.read
f.close
end
end

しかし,この場合,タイムアウトとかの場合は考慮されない.
考慮する場合は,Net:HTTP,timeoutを使う.

require 'net/http'
require 'timeout'
require 'uri'
TimeoutCount = 10
def get(host, path, port = 80)
begin
timeout( TimeoutCount ) {
begin
Net::HTTP.start( host, port ) { |http|
response , = http.get( '/index.html' )
return response.body
}
rescue Net::ProtoRetriableError => e
puts "Retry"
retry
end
}
rescue TimeoutError => e
puts "TimeoutError"
rescue
puts "Exception"
end
end
puts get("www.yahoo.co.jp","/")