"грабли", чтобы "грабли" - PullRequest
1 голос
/ 30 января 2011

Чтобы подготовить базу данных для моего приложения Ruby on Rails 3, мне нужно выполнить следующие шаги в Терминале:

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

Можно ли выполнить все эти шаги в одном? Возможно, можно запустить команду 'rake', которая "запустит" другую команду "rake" ... но как?!

Ответы [ 4 ]

3 голосов
/ 30 января 2011

Пустые блоки 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
3 голосов
/ 30 января 2011

Вы можете определить свои собственные грабли, которые вызывают другие задачи как обязательные:

# 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).

2 голосов
/ 30 января 2011

rake db:create db:migrate db:seed сделает все это.

1 голос
/ 30 января 2011

zeteitic понял все правильно, но если вы не хотите указывать пространство имен для этой задачи в «db», вам нужно что-то более похожее на это:

desc "Bootstrap database."
task :bootstrap => ["db:create", "db:migrate", "db:seed"] do; end

И в командной строке:

rake bootstrap
# => create, migrate and seed db
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...