2017-04-09 148 views
1

我該如何運行所有rake任務?運行所有rake任務?

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

task :all do 
    # Run all other tasks? 
end 

我知道我可以做

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

,但如果我增加新的任務,我還需要將它添加到:all依賴關係。我想 喜歡避免手動的需要,因爲它似乎很容易忘記。

回答

1

這裏有一種方法:

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 

運行它:在this question

# bundle exec rake hot_tasks:all 
1 
2 

更多(不一定好)的想法,尤其是如果你在一個Rails應用程序是。

+0

1)不就是遞歸調用':all'任務呢?如果不是爲什麼不呢? 2)如果我不需要命名空間,'tasks.each ...'就足夠了嗎? – Paladin

+0

1)不,耙去重複任務拉到作爲依賴,所以如果你調用:所有,再次調用它編程不會再運行它。 2)如果你不想命名空間,Rake.application.tasks.each可以工作。 – burnettk

+0

真棒,謝謝:) – Paladin