2010-09-17 22 views

Répondre

2

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 
+1

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

1

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.

+0

Je suppose que c'est une réponse assez bonne. Je cherchais vraiment un simple commutateur de ligne de commande qui a simplement ignoré les dépendances. – AndrewVos

+0

Oh j'ai oublié de dire merci! – AndrewVos