使用Hpricot进行Ruby Web API抓取/错误处理

使用Hpricot进行Ruby Web API抓取/错误处理,ruby,error-handling,raise,Ruby,Error Handling,Raise,我已经编写了一个简单的RubyGem来抓取一组网站,提供了一个简单的API,在gem本身中我包含了一个重试方法。。。在主要由于超时而出现故障时,尝试使用Hpricot 3次或以上 def retryable(options = {}, &block) opts = { :tries => 1, :on => Exception }.merge(options) retry_exception, retries = opts[:on], opts[:tries]

我已经编写了一个简单的RubyGem来抓取一组网站,提供了一个简单的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
所以现在,在我的Rails应用程序中,它使用了我创建的这个gem,我想知道如果gem本身由于任何原因无法产生结果,我应该如何处理错误

型号/Available.rb
我不太确定如何处理这个。。。在这一点上,我并不真正关心重试,我只想返回一个结果,要么是gem返回的哈希值,要么返回带有错误的false?

对于正常的错误,如404、500等,无论您使用何种机制获取网站内容,都会抛出错误,出于其他原因,gem应该引发其他错误,并通知您的rails应用程序,在哪里可以处理它们,因为这是特定于该应用程序的

Gem应该尽可能通用,以便重用等

data = Whatever.find_item_by_id options
unless hwdata
  raise "Web error "
end