Ruby on rails 将多个rake任务组合成一个rake任务
而不是像这样单独运行每个rake任务:Ruby on rails 将多个rake任务组合成一个rake任务,ruby-on-rails,rake,task,Ruby On Rails,Rake,Task,而不是像这样单独运行每个rake任务: rake db:drop rake db:create rake db:migrate rake db:load 我想运行一个rake任务来完成所有的任务 这就是我的rakefile: desc 'This rebuilds development db' namespace :rebuild_dev do Rake::Task["db:drop"].execute Rake::Task["db:create"].execute Rake::Tas
rake db:drop
rake db:create
rake db:migrate
rake db:load
我想运行一个rake任务来完成所有的任务
这就是我的rakefile:
desc 'This rebuilds development db'
namespace :rebuild_dev do
Rake::Task["db:drop"].execute
Rake::Task["db:create"].execute
Rake::Task["db:migrate"].execute
Rake::Task["db:load"].execute
end
当我运行它时,上面的方法不起作用。您希望
调用而不是执行。从我自己的代码中摘录一小段,展示了如何传递变量:
namespace :clients do
task :create, [:client] => ["clients:creation:checks"] do |t, args|
Rake::Task["clients:creation:git"].invoke(client, password)
Rake::Task["server:virtualhost:create"].invoke(client)
Rake::Task["server:virtualhost:enable"].invoke(client)
Rake::Task["server:reload"].invoke
Rake::Task["db:roles:create"].invoke(client, password)
Rake::Task["db:create"].invoke(client, client)
Rake::Task["db:migrate"].invoke(client)
end
end
或者,您可以使任务依赖于另一个任务,正如我在上文中使用的:create
依赖于客户机:creation:checks
所做的那样
只是澄清一下,名称空间是用于对任务进行分组的,因此您必须在名称空间中定义任务,正如我上面所说的。不能简单地从命名空间中调用任务
因此,上面的代码应该是:
desc 'This rebuilds development db'
task :rebuild_dev do
Rake::Task["db:drop"].invoke
Rake::Task["db:create"].invoke
Rake::Task["db:migrate"].invoke
Rake::Task["db:load"].invoke
end
您可以在没有主体的任务上使用依赖项来完成它
desc 'This rebuilds development db'
task :rebuild_dev => ["db:drop", "db:create", "db:migrate", "db:load"]
将参数传递给子任务时,这将如何工作?为什么调用
,我可以使用执行
意味着执行(客户端)
@amiming-执行
将仅运行任务,而调用
将运行任何依赖项。此外,它将仅在需要时运行任务。注:这是8年前的情况;老实说,我不知道从那以后情况是否发生了变化@托弗·范吉奥,谢谢你的回复。
desc 'This rebuilds development db'
task :rebuild_dev => ["db:drop", "db:create", "db:migrate", "db:load"]