2009-12-31 182 views
2

我有一些在我的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 

這可能嗎?

回答

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

+0

再次感謝,你是否知道任何方法來鉤入渲染堆棧跟蹤或類似的函數? – ecoologic 2015-01-12 05:16:22