2009-08-19 5 views
2

j'ai un espace de noms avec des tâches différentes:Exécuter toutes les tâches avec espace de noms Capistrano

namespace :mytest do 
    task :setup do; ... end; 
    task :task1 do; ... end; 
    task :task2 do; ... end; 
end

Quand je lance bouchon mytest je reçois la tâche `sauvegarde » n'existe pas. Comment créer une commande qui appelle toutes les tâches?

Comment créer une commande qui appelle toutes les tâches?

Répondre

3
task :default do 
    setup 
    task1 
    task2 
end
0

Dans un projet, je me suis souvent trouvé dans l'obligation d'appeler toutes les tâches dans un espace de noms donné. Voici un simple patch de singe à la classe Namespace qui ajoutera une méthode run_all_tasks. La méthode prend un tableau facultatif except, qui doit être une liste de noms de tâches (en tant que symboles) à exclure.

module Capistrano 
    class Configuration 
    module Namespaces 
     class Namespace 

     def run_all_tasks(except = []) 
      except << :all 

      self.task_list(false).each do |task| 
      task.body.call unless except.include?(task.name) 
      end 
     end 

     end 
    end 
    end 
end 

La méthode exécutera les tâches dans l'ordre dans lequel elles sont définies. Comme avec tout type de patch de singe \ hack, utilisez cette méthode avec précaution!