web-dev-qa-db-fra.com

Afficher les migrations en attente dans les rails

Existe-t-il une tâche rake qui affiche les migrations en attente dans une application Rails?

144
Readonly

rake db:migrate:status accomplira cela dans Rails 3. Voir le commit .

231
jrdioko

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.
35
theIV

rake db:version accomplira ceci sur Rails 2.

15
gerryster

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
15
Deepak Mahakale

Cela fonctionne pour Rails 5.2 

ActiveRecord::Base.connection.migration_context.needs_migration?
3
Sairam

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.

2
John Lockwood

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."
1
niborg

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

1
wondersz1

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.

1
puneet18

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

0
Foram Thakral