2011-05-26 2 views

Répondre

1

La façon dont vous avez défini vos tâches provoquera la sortie de rake dès que l'une des dépendances aura échoué/déclenché et provoqué une exception. C'est la fonctionnalité de base de rake.

Une façon de contourner est bien de faire quelque chose comme

task :all do 
task :tmp => ['foo','bar'] 
begin 
    Rake::Task[:tmp].invoke 
rescue 
    #do something with the exception 
end 
end 
+0

pefect, merci. Je viens de mettre 'Rake :: Task [: foo] .invoke',' Rake :: Task [: bar] .invoke', et 'Rake :: Task [: announce_success] .invoke' juste à l'intérieur du bloc begin. –

1

Malheureusement, cela va à l'encontre du grain de Rake.

Ruby a un crochet at_exit auquel vous pouvez ajouter un bloc de code, si vous voulez exécuter un peu de nettoyage lorsque Rake se termine. Vous pouvez combiner râteau-tâches et at_exit crochet comme ceci:

task :cleanup do 
    at_exit { 
     # cleanup code here 
    } 
    end 

Assurez-vous :cleanup est exécuté au début de la liste des dépendances.

+0

cool ... pas sûr que je comprends bien - comment cette technique serait utilisée avec mon code ci-dessus? –

Questions connexes