Показывать ожидающие миграции в рельсах

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

Ответ 1

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

up означает, что миграция была выполнена. down означает, что миграция не была выполнена.

Ответ 2

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

EDIT: Ниже приведен пример вывода после того, как он только что сгенерирован и не выполнил миграцию 'test'

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.

Ответ 3

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

Ответ 4

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

Рельсы 3 и 4

rake db:migrate:status

Рельсы 5

rake db:migrate:status

# Or

rails db:migrate:status

Ответ 5

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

ActiveRecord::Base.connection.migration_context.needs_migration?

Ответ 6

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

Ответ 7

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

rake db:migrate:status

ИЛИ

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

Ответ 8

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

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

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

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

Ответ 9

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

(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."

Ответ 10

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

rails db:migrate:status

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