Как мне написать задачу rake, которая запускает задачу Rails db: migrate?
-
03-07-2019 - |
Вопрос
Я хотел бы запустить db: migrate VERSION = 0, а затем db: migrate внутри моей собственной задачи rake. Я не понимаю, как это сделать. Нужно ли специальное заявление о необходимости? Моя задача rake будет находиться в каталоге lib / tasks приложения Rails. Спасибо.
Решение
Ваша задача зависит только от наличия чистой базы данных? Если это так, то вы можете сделать:
task: my_task = > [: environment, 'db: reset']
Другие советы
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 или выше.
Посмотрите rake db: reset
, поскольку это выполнит то, что вы пытаетесь сделать.
Чтобы увидеть, что делают все ваши рейк-задачи, запустите rake -T