Как мне написать задачу rake, которая запускает задачу Rails db: migrate?

StackOverflow https://stackoverflow.com/questions/611189

  •  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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top