2012-04-12 3 views
7

Ich habe eine ganze Reihe von Migrationen seit Beginn meiner Rails App erstellt. Einige von ihnen waren nur zu Testzwecken. Ich habe jetzt viele Migrationen, die völlig nutzlos sind (zB: Erstellen Sie eine Tabelle in einer Migration und legen Sie sie in der nächsten ab).Entfernen Sie vergangene Migration in Schienen

Wie schema.rb aktualisiert werden, sobald db: migrate ran ist, ist es möglich, alle Migrationen zu löschen und vom eigentlichen Inhalt von schema.rb zu starten?

+1

können Sie 'Rake db: schema: load' –

+0

verwenden und alle Migrationsdateien löschen? – Luc

Antwort

8

Ja, Sie können (und sollten wahrscheinlich) ältere Migrationen entfernen. Es wird einen Punkt geben, an dem Ihre alten Migrationen möglicherweise nicht mehr funktionieren, da Ihr Modellcode von späteren Versionen Ihres Schemas abhängt.

So mit allen Mitteln löschen, die Migrationen (Sie sie unter Quellcodeverwaltung haben, nicht wahr?), Und

rake db:schema:load 

verwenden, um eine neue Datenbank zu initialisieren, wenn Sie benötigen.

UPDATE: Die Rails Reiseführer etwas Ähnliches zu sagen über dieses hat: http://guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you

+0

Verwenden Sie 'Rake Db: Schema: Laden' statt' Rake Db: Migrieren'? – methyl

+0

Nr. 'Rake db: Schema: Laden' lädt Ihre aktuelle Datenbank und erstellt sie neu aus 'schema.rb'. 'rake db: migrate' wendet alle ausstehenden Migrationen auf die vorhandene Datenbank an. – Thilo

+0

Warum ist es wichtig, sie in der Quellcodeverwaltung zu haben, wenn ich die letzte Version von schema.rb habe? Sollte das nicht der wichtige Typ sein? – Luc

0

einen besseren Weg, dies zu tun, ist die folgende ...

zu tun Wenn Sie einen Meilenstein in Ihrem Projekt zu erreichen, und Sie sind sicher, dass Sie nicht unter diese Version der DB migrieren möchten, Sie können Ihre große Anzahl von Migrationsdateien durch eine einzige Migrationsdatei ersetzen, die Sie dann als neue "initiale" Migration verwenden können, die bündelt alles was bis zu diesem Datum gemacht wurde.

Danach: weiterhin Migrationen in Ihrem Projekt verwenden!

Bearbeiten Sie niemals Ihre schema.rb-Datei von Hand .. und laden Sie nie die db/schema.rb-Datei, es sei denn für etwas wie Disaster Recovery.

Sie haben keine 100% Garantie, dass die Datei, die in die Versionskontrolle eingecheckt wird, die neueste oder sogar die korrekte Version ist.

Es ist viel sicherer, nach oben und nach unten zu migrieren und stattdessen eine große Anzahl von Migrationen in einer einzelnen Migrationsdatei zu bündeln.

Durch das manuelle Laden der schema.rb-Datei umgehen Sie vollständig das Sicherheitsnetz, das die Migrationen bieten. Das ist einfach keine gute Idee.