我有一个使用savon作为gem来与SOAP API交谈的类。有时服务器无法访问,因此实现soap方法的方法会抛出Timeout::Error
。实施这样的救援不是问题:
begin
...
rescue Timeour::Error
...
end
但是我定义了约50种可能受影响的方法,我不想重复相同的代码50次。那绝对不干。有办法解决这个问题吗?我已经考虑过这样了:
def safe_call method, params
begin
self.send method, params
rescue Timeour::Error
# do sth heroic to rescue the method
end
end
但这非常不可思议,因为我必须在使用该类的所有脚本中更改每个调用。有没有办法进行全班救援?
答案 0 :(得分:3)
我认为你可以使用rescue_from。您可以在此处阅读:http://api.rubyonrails.org/classes/ActiveSupport/Rescuable/ClassMethods.html
简而言之,您可以将它放在应用程序控制器中:
rescue_from 'Timeout::Error' do |exception|
# Rescue logic here.
end