Existe-t-il une tâche rake qui affiche les migrations en attente dans une application Rails?
rake db:migrate:status
accomplira cela dans Rails 3. Voir le commit .
Il y a rake db:abort_if_pending_migrations
(du moins dans Rails 2.3.3, vous ne savez pas quand il a été introduit). La description indique "Déclenche une erreur s'il y a des migrations en attente". Cela semble être davantage utilisé comme condition préalable à d’autres tâches, mais j’imagine que vous pourriez l’utiliser à vos fins.
EDIT: Voici un exemple de la sortie après avoir juste généré et ne pas exécuter une migration "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.
rake db:version
accomplira ceci sur Rails 2.
Cette commande listera toutes les migrations avec leur statut (UP
ou DOWN
)
Rails 3 et 4
rake db:migrate:status
Rails 5
rake db:migrate:status
# Or
Rails db:migrate:status
Cela fonctionne pour Rails 5.2
ActiveRecord::Base.connection.migration_context.needs_migration?
Essayez rake -h (aide) et jetez un oeil à rake -n (= rake --dry-run). Donc, probablement quelque chose comme rake -n db: migrate devrait vous donner ce que vous voulez.
Si vous avez besoin de bash one-liner pour déterminer si vous souhaitez ou non exécuter une migration (par exemple, migrez uniquement dans une commande Heroku release phase lorsqu'il y a une migration en attente), cela fonctionne:
(Rails db:migrate:status | grep "^\s*down") && Rails db:migrate || echo "No pending migrations found."
Peut-être pas tout à fait ce que l'OP demande, mais si vous avez juste besoin de vérifier rapidement si des migrations sont en attente d'utilisation dans une tâche de commission, sans avoir recours à
rake db: migrate: status | grep down (peut ne pas fonctionner si vous êtes sous Windows)
ActiveRecord :: Migration.check_pending! (déclenche ActiveRecord :: PendingMigrationError que vous devez sauver)
vous pouvez utiliser needs_migration? méthode: https://apidock.com/Rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class
Commande suivante pour vérifier l'état de la migration:
rake db:migrate:status
OR
lorsque vous exécutez votre serveur, un message s'affiche pour vous permettre d'exécuter d'abord la migration en attente.
Si vous voulez voir le nombre de migrations effectuées ou en attente, utilisez la commande ci-dessous.
Rails db:migrate:status
Plus sur ce lien: Rails Active Record Migration