我尝试在此帖后的共享:namespace
内运行rake任务列表:How do I run all rake tasks?。
但它不起作用。
每篇帖子推荐
desc "perform all scraping"
task :scrape do
Rake::Task[:scrape_nytimes].execute
Rake::Task[:scrape_guardian].execute
end
我的情况不同,所有rake任务都在命名空间中。
佣金任务
namespace :get_ready do
task check_weather: :environment do
p 1
end
task make_lunch: :environment do
p 2
end
task start_car: :environment do
p 3
end
end
尝试创建一个运行所有rake任务的rake任务,如下所示。
desc "Run all tasks"
task run_all: :environment do
Rake::Task[:check_weather].execute
Rake::Task[:make_lunch].execute
Rake::Task[:start_car].execute
end
然后使用rake run_all
或rake get_ready
投放。我试过的以下变化也没有用。
Rake::Task[run_all:check_weather].execute
Rake::Task[:run_all, :check_weather].execute
是否有人有经验在共享命名空间中运行一批rake任务并知道如何执行此操作?
答案 0 :(得分:2)
应该是:
desc "Run all tasks"
task run_all: :environment do
Rake::Task['get_ready:check_weather'].execute
Rake::Task['get_ready:make_lunch'].execute
Rake::Task['get_ready:start_car'].execute
end
命名空间为get_ready
,check_weather
,make_lunch
,start_car
是该命名空间中的任务。
更优雅的解决方案是:
desc "Run all tasks"
task run_all_elegantly: [:environment, 'get_ready:check_weather', 'get_ready:make_lunch', 'get_ready:start_car']
答案 1 :(得分:0)
每个人都注意到rails -T
或您的情况rails -T get_ready
的输出吗?
它显示每个命令,并以注释形式显示说明,因此您可以通过管道传输输出并使用bash执行它:
(rails -T deploy) | /bin/bash
因此,如果您想执行所有任务,则无需执行额外的任务。