Ответы:
rake db:migrate:status
(Rails 3 до 5) или rails db:migrate:status
(Rails 5) выполнят это. Смотрите этот коммит .
up
означает, что миграция была выполнена. down
означает, что миграция не была выполнена.
rake -T
но другие появляются ?
up
означает, что миграция была выполнена. down
означает, что миграция не была выполнена.
Есть 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.
Эта команда выведет список всех миграций с их статусом ( UP
или DOWN
)
Рельсы 3 и 4
rake db:migrate:status
Рельсы 5
rake db:migrate:status
# Or
rails db:migrate:status
Попробуйте rake -h (помощь) и посмотрите на rake -n (= rake --dry-run). Поэтому, вероятно, что-то вроде rake -n db: migrate должно дать вам то, что вы хотите.
Возможно, это не совсем то, о чем просит 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
ActiveRecord::Migrator.needs_migration?
в Rails 5.1
Если вы хотите узнать, сколько выполнено или ожидает перенос, вы можете увидеть, используя команду ниже.
rails db:migrate:status
Подробнее по этой ссылке: Rails Active Record Migration
Если вам нужна команда bash one-liner, чтобы определить, следует ли выполнять миграцию или нет (например, мигрировать только в команде фазы выпуска Heroku, когда есть ожидающая миграция), это работает:
(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."
Don't know how to build task 'db:migrate:status'
на рельсы 3.2.8