2011-04-03 67 views
1

如何将模块中的错误传递回调用它的耙子任务?Rails:从模块返回错误到Rake任务?

我的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 

我也从一个控制器调用此模块所以这将是不错的错误处理解决方案或多或少不可知。在我的代码结构

的运转轨道3.任何无关的意见(即建议)比欢迎:)

回答

0

Operator#initiate_call方法陷阱StandardError异常更使您的耙任务将永远不会看到它们。我会从initiate_call中删除rescue,并让调用者处理所有的异常处理。然后,你的控制器的异常处理程序中会有flash[:error] = "Error #{bang}",并且rake任务将保持原样。

基本的方法是将错误处理的调用堆栈一直推到某人能够做些什么的地方; initiate_call不能对异常做任何有用的事情,所以它不应该试图处理它。

相关问题