Как мне написать задачу rake, которая запускает задачу Rails db: migrate? - PullRequest
3 голосов
/ 04 марта 2009

Я хотел бы запустить db: migrate VERSION = 0, а затем db: migrate внутри моей собственной задачи rake. Я не понимаю, как это сделать. Нужно ли специальное заявление о необходимости? Моя задача rake будет находиться в каталоге lib / tasks приложения Rails. Спасибо.

Ответы [ 3 ]

2 голосов
/ 06 марта 2009

Ваша задача зависит только от наличия чистой базы данных? Если это так, то вы можете сделать:

task: my_task => [: environment, 'db: reset']

2 голосов
/ 04 марта 2009

EDIT: Rake :: Task [] не будет принимать параметры, вы должны установить его в ENV. Кроме того, вам нужно повторно включить задачу, чтобы запустить ее несколько раз.

ENV['VERSION']= '0'
Rake::Task['db:migrate'].invoke
Rake::Task['db:migrate'].reenable
ENV.delete 'VERSION'
Rake::Task["db:migrate"].invoke

ПРИМЕЧАНИЕ. Для Rake :: Task.reenable требуется Rake 0.8.2 или выше.

0 голосов
/ 04 марта 2009

Проверьте rake db:reset, поскольку это выполнит то, что вы пытаетесь сделать.

Чтобы увидеть, что делают все ваши рейк-задачи, запустите rake -T

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...