Скраб / обработка ошибок в Ruby Web API с помощью Hpricot - PullRequest
0 голосов
/ 11 сентября 2009

Я написал простой рубиновый гем для очистки набора веб-сайтов, предоставляя простой 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 с некоторой ошибкой?

1 Ответ

0 голосов
/ 11 сентября 2009

Для обычных ошибок, таких как 404, 500 и т. Д., Какой бы механизм вы не использовали для извлечения контента сайта, он выдаст ошибки, по другим причинам Gem должен вызвать другие ошибки и сообщить вашему приложению rails, где они быть обработанным, потому что это специфично для этого приложения.

Самоцвет должен быть как можно более универсальным для повторного использования и т. Д.

...