救援佣金任务

时间:2009-12-31 12:43:04

标签: ruby rake

我的Rakefile中有很多文件任务,看起来像是

file 'task1' => 'dep' do
  sh "some command"
end

还有

task :start => :next
task :last => :dep2

我想知道是否有办法在顶层拯救它,即说

begin
  task :last => :dep2
rescue
  # do something
end

而不是每个file任务

file 'task1' => 'dep' do
  begin
    sh "some command"
  rescue
    # do something
  end
end

有可能吗?

1 个答案:

答案 0 :(得分:6)

不,但您可以定义自定义方法来简化任务。

def safe_task(&block)
  yield
rescue
  # do something
end

file 'task1' => 'dep' do
  safe_task do
    sh "some command"
  end
end

此外,请记住,:task2取决于:task1:task1可能会引发异常,您应该在:task1中处理错误,而不是:task2