48 votes

Comment faire échouer explicitement une tâche dans ruby rake ?

Disons que j'ai un rakefile comme ceci :

file 'file1' => some_dependencies do
  sh 'external tool I do not have control over, which sometimes fail to create the file'
  ???
end

task :default => 'file1' do
  puts "everything's OK"
end

Maintenant, si je ne mets rien à la place de ? ??, j'obtiens le message OK, même si l'outil externe ne parvient pas à générer le fichier. Quelle est la bonne façon d'informer rake que la tâche 'file1' a échoué et qu'il doit s'arrêter (en espérant présenter un message significatif - comme quelle tâche a échoué) - la seule chose à laquelle je pense maintenant est de lever une exception, mais cela ne semble pas correct.

P.S L'outil renvoie toujours 0 comme code de sortie.

60voto

Richard Cook Points 10763

Utilisez le raise o fail comme vous le feriez pour tout autre script Ruby ( fail est un alias pour raise ). Cette méthode prend comme argument une chaîne de caractères ou une exception qui est utilisée comme message d'erreur affiché à la fin du script. Cela fera également en sorte que le script renvoie la valeur 1 au shell appelant. Il est documenté aquí et d'autres endroits.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X