Мой вопрос связан с тем, Как спасти проблемы тайм-аута (Ruby, направляющие).
Вот распространенный способ спасти от тайм-аута:
def action
# Post using Net::HTTP
rescue Timeout::Error => e
# Do something
end
Я хотел бы определить, было ли исключение повышено при попытке соединиться с хостом, или если это было повышено при попытке читать из хоста. Действительно ли это возможно?
Вот решение (после исправления Бена):
require "net/http"
http = Net::HTTP.new("example.com")
http.open_timeout = 2
http.read_timeout = 3
begin
http.start
begin
http.request_get("/whatever?") do |res|
res.read_body
end
rescue Timeout::Error
puts "Timeout due to reading"
end
rescue Timeout::Error
puts "Timeout due to connecting"
end