救援佣金任务

squ*_*uil 2 ruby rake

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

file 'task1' => 'dep' do
  sh "some command"
end
Run Code Online (Sandbox Code Playgroud)

还有

task :start => :next
task :last => :dep2
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以在顶层拯救它,也就是说

begin
  task :last => :dep2
rescue
  # do something
end
Run Code Online (Sandbox Code Playgroud)

而不是在每个file任务中都这样做

file 'task1' => 'dep' do
  begin
    sh "some command"
  rescue
    # do something
  end
end
Run Code Online (Sandbox Code Playgroud)

可能吗?

Sim*_*tti 6

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

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

file 'task1' => 'dep' do
  safe_task do
    sh "some command"
  end
end
Run Code Online (Sandbox Code Playgroud)

另外,请记住,这:task2取决于:task1并且:task1可以引发异常,您应该处理错误:task1,而不是:task2.