'rake'“为了''耙''

时间:2011-01-30 00:10:06

标签: ruby-on-rails ruby database ruby-on-rails-3 rake

要为我的Ruby on Rails 3应用程序准备数据库,我需要在终端中运行以下步骤:

rake db:create
rake db:migrate
rake db:seed

是否可以在一个步骤中完成所有这些步骤?也许有可能运行一个'rake'命令来“触发”另一个'rake'命令......但是如何?!

4 个答案:

答案 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:createdb:migratedb: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