如何将模块中的错误传回给调用它的rake任务?
我的佣金任务如下:
require 'mymodule.rb'
task :queue => :environment do
OPERATOR = Mymodule::Operator.new
begin
OPERATOR.initiate_call (1234567189)
rescue StandardError => bang
puts "Shit happened: #{ bang} "
end
end
这是我的模块..
module Mymodule
class Operator
def initiate_call (number)
begin
# make the call
rescue StandardError => bang
flash[:error] = "Error #{bang}"
return
end
end
end
end
我也从一个控制器调用这个模块,所以最好有一个或多或少不可知的错误处理解决方案。
运行Rails 3.我的代码结构上的任何不相关的评论(即建议)都受到欢迎:)
答案 0 :(得分:0)
您的Operator#initiate_call
方法会捕获StandardError
个例外,因此您的佣金任务永远不会看到它们。我从rescue
删除initiate_call
并让调用者处理所有异常处理。然后,你的控制器的异常处理程序中有flash[:error] = "Error #{bang}"
,rake任务将保持原样。
基本方法是将错误处理调用堆栈一直推送给可以对其执行操作的人; initiate_call
无法对异常做任何有用的事情,因此它不应该尝试处理它。