Ну, это зависит от того, ссылаетесь ли вы на класс или на константу.
Мне, например, пришлось использовать следующую инструкцию case, чтобы заставить работать определенный тип обнаружения
def fail(exception_error)
exception = exception_error
case exception.class
when /HTTPClient::ConnectTimeoutError.new/
status = 'CONNECTION TIMEOUT'
connection_status = 'DOWN'
else
status = 'UNKNOWN FAILURE'
connection_status = 'DOWN'
end
Но это потому, что я работаю с классом исключений, а не с константой.
HTTPCLient вызывает фактический объект класса:
class TimeoutError < RuntimeError
end
class ConnectTimeoutError < TimeoutError
end
Вот загадочный факт:
error = HTTPClient::ConnectTimeoutError.new
HTTPClient::ConnectTimeoutError === error
#=> true
error === HTTPClient::ConnectTimeoutError
#=> false
Не уверен, что с этим делать.