2

私は、SOAPAPIと話すための宝石としてsavonを使用するクラスを持っています。また、サーバーに到達できない場合があるため、soapメソッドを実装するメソッドは。をスローしTimeout::Errorます。このようなレスキューを実装することは問題ではありません:

begin 
  ...
rescue Timeour::Error 
  ...
end

しかし、影響を受ける可能性のあるメソッドが最大50個定義されており、同じコードを50回繰り返したくありません。それは絶対に乾いていない。これに対処する方法はありますか?私はすでにこのようなsthについて考えました:

def safe_call method, params
  begin
    self.send method, params
  rescue Timeour::Error
    # do sth heroic to rescue the method
  end
end

しかし、クラスを使用するすべてのスクリプトで各呼び出しを変更する必要があるため、これはかなり素晴らしいことではありません。クラス全体の救助を行う方法はありますか?

4

1 に答える 1

3

私はあなたがrescue_fromを使うことができると思います。ここでそれについて読むことができます:http://api.rubyonrails.org/classes/ActiveSupport/Rescuable/ClassMethods.html

つまり、これをアプリケーションコントローラーに入れることができます。

rescue_from 'Timeout::Error' do |exception|
  # Rescue logic here.
end
于 2012-04-30T16:38:49.487 に答える