2009-12-31 4 views
2

J'ai un certain nombre de tâches de fichiers dans mon Rakefile qui ressemblent àtâches de râteau de sauvetage

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

Il y a aussi

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

Je me demandais s'il y avait un moyen de sauvetage sur le niveau supérieur , c.-à-dire

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

plutôt que dans toutes les tâches file faire

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

Est-ce possible?

Répondre

6

Non, mais vous pouvez définir une méthode personnalisée pour simplifier vos tâches.

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

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

Aussi, rappelez-vous qui est :task2 dépend de :task1 et :task1 peut soulever une exception, vous devez gérer l'erreur dans :task1, pas :task2.

+0

merci encore une fois, savez-vous un moyen de se connecter à la fonction qui restitue la pile ou quelque chose de similaire? – ecoologic

Questions connexes