Est-il possible d'exécuter une tâche de râteau sans courir les conditions préalables?
Question
Y at-il un commutateur de ligne de commande que je suis absent?
En ce moment je vais avoir à faire ceci:
#task :install => :build do
task :install do
end
La solution
Je semble avoir résolu ce problème en ajoutant simplement des tâches supplémentaires dans le format « taskname_no_prerequisites ». Ainsi, par exemple dans le code ci-dessous exécution « râteau install_no_prerequisites » ne serait pas la cause « construire » à exécuter.
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
Autres conseils
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 vos tâches individuellement, 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 go.
rake build
rake install
rake go
Je le fais beaucoup, en fait. il est très pratique pour moi d'exécuter les étapes individuelles quand je veux, et ont la plus grande séquence d'étapes quand je les ai besoin.