如果子任务失败,如何知道rcov任务?

时间:2011-05-26 00:05:34

标签: ruby rake

我有这个任务:

task :all => ['foo', 'bar', 'announce_success']

如果foobar未引发异常,则announce_success会发生。如果引发异常,我怎么能执行特定任务或代码块?

2 个答案:

答案 0 :(得分:1)

不幸的是,这违背了耙子。

如果你想在Rake终止时运行一些清理,那么Ruby有一个at_exit钩子可以添加一段代码。你可以像这样组合rake-tasks和at_exit hook:

  task :cleanup do
    at_exit {
      # cleanup code here
    }
  end 

请确保在依赖项列表的早期执行:cleanup

答案 1 :(得分:1)

您定义任务的方式将导致rake在其中一个依赖项失败/引发和异常时立即退出。这是rake的核心功能。

解决办法的一种方法是做一些像

这样的事情
task :all do
 task :tmp => ['foo','bar']
 begin 
   Rake::Task[:tmp].invoke
 rescue
  #do something with the exception
 end
end