Y a-t-il un commutateur de ligne de commande qui me manque?Existe-t-il un moyen d'exécuter une tâche rake sans exécuter les prérequis?
En ce moment je suis d'avoir à faire:
#task :install => :build do
task :install do
end
Y a-t-il un commutateur de ligne de commande qui me manque?Existe-t-il un moyen d'exécuter une tâche rake sans exécuter les prérequis?
En ce moment je suis d'avoir à faire:
#task :install => :build do
task :install do
end
Je semble avoir résolu ce problème en ajoutant simplement des tâches supplémentaires au format "taskname_no_prerequisites". Par exemple, dans le code ci-dessous, l'exécution de "rake install_no_prerequisites" n'entraînerait pas l'exécution de "build".
desc "Build"
task :build do
puts "BUILDING..."
end
desc "Install"
task :install => :build do
puts "INSTALLING..."
end
Rake::Task::tasks.each do |task|
desc "#{task} without prerequisites"
task "#{task}_no_prerequisites".to_sym do
task.invoke_without_prerequisites
end
end
module Rake
class Task
def invoke_without_prerequisites
execute
end
end
end
si vous définissez une dépendance à l'égard d'une tâche, il sera toujours exécuté en premier. Cependant, vous pouvez créer individuellement vos tâches, puis les regrouper avec une autre tâche, comme ceci:
task :build do
...
end
task :install do
...
end
task :go => [:build, :install]
et vous pouvez appeler la construction ou l'installation des tâches indépendamment ou exécuter la séquence avec la tâche de déplacement.
rake build
rake install
rake go
Je le fais beaucoup, en fait. il est très pratique pour moi d'exécuter des étapes individuelles quand je veux, et avoir la plus grande séquence d'étapes quand j'ai besoin d'eux.
Pourquoi ne pas appeler .execute directement sur l'objet de tâche dans la définition de tâche? Le invoke_without_prerequisites semble juste être un alias – Titas