Gibt es eine Rake-Aufgabe, die die ausstehenden Migrationen in einer Rails-App anzeigt?
Gibt es eine Rake-Aufgabe, die die ausstehenden Migrationen in einer Rails-App anzeigt?
Antworten:
rake db:migrate:status
(Schienen 3 bis 5) oder rails db:migrate:status
(Schienen 5) erreichen dies. Siehe dieses Commit .
up
bedeutet, dass die Migration ausgeführt wurde. down
bedeutet, dass die Migration nicht ausgeführt wurde.
rake -T
aber die anderen?
up
bedeutet, dass die Migration ausgeführt wurde. down
bedeutet, dass die Migration nicht ausgeführt wurde.
Es gibt rake db:abort_if_pending_migrations
(zumindest in Rails 2.3.3, nicht sicher, wann es eingeführt wurde). In der Beschreibung heißt es: "Löst einen Fehler aus, wenn Migrationen ausstehen". Dies scheint eher als Voraussetzung für andere Aufgaben zu dienen, aber ich vermute, Sie könnten es für Ihre Zwecke verwenden.
BEARBEITEN: Hier ist ein Beispiel für die Ausgabe, nachdem gerade eine Testmigration generiert und nicht ausgeführt wurde
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.
Dieser Befehl listet alle Migrationen mit ihrem Status ( UP
oder DOWN
) auf.
Schienen 3 und 4
rake db:migrate:status
Schienen 5
rake db:migrate:status
# Or
rails db:migrate:status
Versuchen Sie es mit Rake -h (Hilfe) und sehen Sie sich Rake -n (= Rake - Trockenlauf) an. Also wahrscheinlich so etwas wie rake -n db: migrate sollte dir das bringen, was du willst.
Möglicherweise nicht ganz das, wonach OP fragt, aber wenn Sie nur schnell überprüfen müssen, ob Migrationen für die Verwendung in einer Rake-Aufgabe anstehen, ohne darauf zurückgreifen zu müssen
Rechen db: migrate: status | grep down (funktioniert möglicherweise nicht, wenn Sie unter Windows arbeiten)
ActiveRecord :: Migration.check_pending! (löst ActiveRecord :: PendingMigrationError aus, den Sie retten müssen)
Sie können Bedürfnisse_Migration verwenden? Methode: https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class
ActiveRecord::Migrator.needs_migration?
in Rails 5.1
Wenn Sie sehen möchten, wie viel Migration durchgeführt wird oder aussteht, können Sie den folgenden Befehl verwenden.
rails db:migrate:status
Mehr zu diesem Link: Rails Active Record Migration
Wenn Sie einen Bash-Einzeiler benötigen, um zu bestimmen, ob eine Migration ausgeführt werden soll oder nicht (z. B. nur in einem Heroku-Release-Phasenbefehl migrieren, wenn eine Migration aussteht), funktioniert dies wie folgt:
(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'
steige auf Schienen 3.2.8