我的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)
可能吗?
不,但您可以定义自定义方法来简化任务.
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.