Есть ли задача 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
Ответ 11
Если вы хотите понять, как работает рельсовая миграция. - https://medium.com/@tushartuteja/demystifying-rails-migrations-53abcf3a7ddd