我有这个任务:
task :all => ['foo', 'bar', 'announce_success']
如果foo
和bar
未引发异常,则announce_success
会发生。如果做引发异常,我怎么能执行特定任务或代码块?
答案 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