我编写了一个简单的 ruby gem 来抓取一组网站,提供一个简单的 API,在 gem 本身内部我包含了一个重试方法......尝试在失败时使用 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
所以现在,在我创建的使用这个 gem 的 Rails 应用程序中,我想知道如果 Gem 本身由于任何原因无法产生结果,我应该如何处理错误......
模型/可用.rb
data = Whatever.find_item_by_id options
unless hwdata
raise "Web error "
end
我不太确定如何处理这个......此时我并不真正关心重试,我只想要返回一个结果,要么是 gem 返回的哈希,要么返回 false 并带有一些错误?