一連のWebサイトをスクレイプするための単純な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
だから今、私が作成したこのgemを使用する私のRailsアプリでは、何らかの理由でGem自体が結果を生成できない場合に、エラーをどのように処理する必要があるのか疑問に思っています...
models / Available.rb
data = Whatever.find_item_by_id options
unless hwdata
raise "Web error "
end
これを処理する方法がよくわかりません...この時点では、再試行はあまり気にしません。gemが返すハッシュまたはエラーでfalseを返す結果のいずれかを返すだけです。