Показать ожидающие миграции в рельсах - PullRequest
149 голосов
/ 29 августа 2009

Существует ли задача rake, которая показывает отложенные миграции в приложении rails?

Ответы [ 10 ]

236 голосов
/ 25 января 2011

rake db:migrate:status (рельсы с 3 по 5) или rails db:migrate:status (рельсы 5) выполнят это. Смотрите этот коммит .

35 голосов
/ 29 августа 2009

Существует rake db:abort_if_pending_migrations (по крайней мере, в Rails 2.3.3, не уверен, когда он был представлен). В описании написано «Вызывает ошибку, если есть ожидающие миграции». Похоже, это больше используется в качестве предварительного условия для других задач, но я думаю, вы могли бы использовать его для своих целей.

РЕДАКТИРОВАТЬ: Вот пример выходных данных после того, как только что сгенерировал и не запустил «тестовую» миграцию

rails_project theIV$ rake db:abort_if_pending_migrations
(in /Users/theIV/Sites/rails_project/)
You have 1 pending migrations:
  20090828200602 Test
Run "rake db:migrate" to update your database then try again.
15 голосов
/ 20 сентября 2016

Эта команда выведет список всех миграций с их статусом (UP или DOWN)

Рельсы 3 и 4

rake db:migrate:status

Рельсы 5

rake db:migrate:status

# Or

rails db:migrate:status
15 голосов
/ 03 февраля 2012

rake db:version выполнит это на Rails 2.

3 голосов
/ 15 октября 2018

Это работает для рельсов 5.2

ActiveRecord::Base.connection.migration_context.needs_migration?
2 голосов
/ 29 августа 2009

Попробуйте rake -h (справка) и посмотрите на rake -n (= rake --dry-run). Так что, вероятно, что-то вроде rake -n db: migrate должно дать вам то, что вы хотите.

1 голос
/ 26 мая 2019

Если вам нужна однострочная команда bash, чтобы определить, следует ли выполнять миграцию или нет (например, мигрировать только в команде фазы выпуска Heroku , когда есть ожидающая миграция), это работает:

(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."
1 голос
/ 12 мая 2018

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

rake db: migrate: статус | grep down (может не работать, если вы работаете в Windows)

ActiveRecord :: Migration.check_pending! (поднимает ActiveRecord :: PendingMigrationError, которую нужно спасти)

вы можете использовать needs_migration? метод: https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class

1 голос
/ 11 января 2017

Следующая команда для проверки статуса миграции:

rake db:migrate:status

OR

при запуске сервера будет отображаться сообщение о начале отложенной миграции.

0 голосов
/ 28 января 2019

Если вы хотите узнать, сколько выполнено или ожидает перенос, вы можете увидеть, используя команду ниже.

rails db:migrate:status

Подробнее по этой ссылке: Rails Active Record Migration

...