要为我的Ruby on Rails 3应用程序准备数据库,我需要在终端中运行以下步骤:
rake db:create
rake db:migrate
rake db:seed
是否可以在一个步骤中完成所有这些步骤?也许有可能运行一个'rake'命令来“触发”另一个'rake'命令......但是如何?!
答案 0 :(得分:3)
您可以定义自己的rake任务,将其他任务称为先决条件:
# lib/tasks/my_tasks.rake
namespace :db do
desc "create, migrate and seed"
task :do_all => [:create,:migrate,:seed] do
end
end
通常,任务的主体将包含Ruby代码来执行某些操作,但在这种情况下,我们只是依次调用三个先决条件任务(db:create
,db:migrate
,db:seed
)
答案 1 :(得分:3)
不需要空的do-end块,例如(对于zetetic的回答)
$ cat lib/tasks/my_tasks.rake
# lib/tasks/my_tasks.rake
namespace :db do
desc "create, migrate and seed"
task :do_all => [:create,:migrate,:seed]
end
答案 2 :(得分:2)
rake db:create db:migrate db:seed
将完成所有这些。
答案 3 :(得分:1)
zeteitic做对了,但是如果你不想在“db”下命名这个任务,你会想要更像这样的东西:
desc "Bootstrap database."
task :bootstrap => ["db:create", "db:migrate", "db:seed"] do; end
在命令行上:
rake bootstrap
# => create, migrate and seed db