Я написал простой рубиновый гем для очистки набора веб-сайтов, предоставляя простой API, внутри самого драгоценного камня я включил метод повторных попыток ... пытаться использовать Hpricot 3 или более раз при сбое, в основном из-за тайм-аутов .
def retryable(options = {}, &block)
opts = { :tries => 1, :on => Exception }.merge(options)
retry_exception, retries = opts[:on], opts[:tries]
begin
return yield
rescue retry_exception
retry if (retries -= 1) > 0
end
yield
end
Так что теперь, в моем приложении Rails, которое использует этот драгоценный камень, который я создал, мне интересно, как я должен обрабатывать ошибки, если сам драгоценный камень не может дать результат по любой причине ...
Модель / Available.rb
data = Whatever.find_item_by_id options
unless hwdata
raise "Web error "
end
Я не совсем уверен, как с этим справиться ... на данный момент мне не особо важна повторная попытка, я только хочу вернуть результат, либо хеш, который гем возвращает, либо возвращает false с некоторой ошибкой?