2017-04-09 20 views
1

Comment puis-je exécuter toutes les tâches rake?Exécuter toutes les tâches râteau?

task :a do 
    # stuff 
end 
task :b do 
    # stuff 
end 
task :c do 
    # stuff 
end 

task :all do 
    # Run all other tasks? 
end 

Je sais que je peux faire

task :all => [:a, :b, :c] do 
end 

mais si j'ajouter une nouvelle tâche, je dois aussi ajouter à :all dépendances. Je voudrais éviter la nécessité de le faire manuellement, car il semble facile d'oublier.

Répondre

1

est ici une façon:

namespace :hot_tasks do |hot_tasks_namespace| 
    task :task1 do 
    puts 1 
    end 
    task :task2 do 
    puts 2 
    end 
    task :all do 
    hot_tasks_namespace.tasks.each do |task| 
     Rake::Task[task].invoke 
    end 
    end 
end 

exécuter:

# bundle exec rake hot_tasks:all 
1 
2 

Plus (pas nécessairement mieux) idées à this question, surtout si vous êtes dans une application de rails.

+0

1) n'ouvrira-t-il pas récursivement la tâche ': all'? Si non, pourquoi pas? 2) Si je n'ai pas besoin d'espaces de noms, 'tasks.each ...' suffirait? – Paladin

+0

1) nah, rake dé-duplique les tâches tirées en dépendances, donc si vous invoquez: all, l'invoquer de nouveau par programmation ne l'exécutera plus. 2) si vous ne voulez pas d'espaces de noms, Rake.application.tasks.each peut fonctionner. – burnettk

+0

génial, merci :) – Paladin