Ausstehende Migrationen in Schienen anzeigen


Antworten:


258

rake db:migrate:status(Schienen 3 bis 5) oder rails db:migrate:status(Schienen 5) erreichen dies. Siehe dieses Commit .

upbedeutet, dass die Migration ausgeführt wurde. downbedeutet, dass die Migration nicht ausgeführt wurde.


Ich Don't know how to build task 'db:migrate:status'steige auf Schienen 3.2.8
Peter Ehrlich

1
@PeterEhrlich: Erscheint es nicht in, rake -Taber die anderen?
jrdioko

2
Bundle Exec Rake DB: Migrieren: Status
Nadeem Yasin

2
Wie liest du die Ausgabe dieses Befehls? Wenn der Status einer Zeile "down" ist, bedeutet dies, dass eine Migration aussteht?
Dennis

12
upbedeutet, dass die Migration ausgeführt wurde. downbedeutet, dass die Migration nicht ausgeführt wurde.
Josh

37

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.

Ich liebe es, dies hinzuzufügen, um Abhängigkeiten zwischen Schienencontainern zu orchestrieren
Vincent De Smet

Immer noch da in Rails 4.1.16
Magne

Funktioniert auch in Schienen 5.1.3
Wilson Silva

16

Dieser Befehl listet alle Migrationen mit ihrem Status ( UPoder DOWN) auf.

Schienen 3 und 4

rake db:migrate:status

Schienen 5

rake db:migrate:status

# Or

rails db:migrate:status


6

Dies funktioniert für Schienen 5.2

ActiveRecord::Base.connection.migration_context.needs_migration?

2

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.


2
Das wird nicht funktionieren. Es wird nur gedruckt: ** Datenbank aufrufen: migrieren (first_time) ** Umgebung aufrufen (first_time) ** Umgebung ausführen (Trockenlauf) ** Ausführung ausführen (Trockenlauf) db: migrieren
jrdioko

2

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


2
ActiveRecord::Migrator.needs_migration?in Rails 5.1
Niborg

1

Folgender Befehl zum Überprüfen des Migrationsstatus:

rake db:migrate:status

ODER

Wenn Sie Ihren Server ausführen, wird eine Meldung angezeigt, dass Ihre ausstehende Migration zuerst ausgeführt werden soll.



1

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."
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.