【问题标题】:Ruby Web API scraping / error handling with Hpricot使用 Hpricot 进行 Ruby Web API 抓取/错误处理
【发布时间】:2010-11-27 11:44:03
【问题描述】:

我编写了一个简单的 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 本身由于任何原因无法产生结果,我应该如何处理错误......

models/Available.rb

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

我不太确定如何处理这个...此时我并不关心重试,我只想要返回一个结果,要么是 gem 返回的哈希,要么返回 false 并带有一些错误?

【问题讨论】:

    标签: ruby error-handling raise


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多