2016-08-08 45 views
1

Ich habe eine Rails-App, die eine Verbindung zu einer anderen Rails App-Datenbank herstellt. Sie haben mehrere gemeinsame Modelle. Wenn Sie die Konsole verwenden, funktioniert alles einwandfrei (ActiveRecord fragt Tabellen ordnungsgemäß ab), aber wenn Sie einen Webserver verwenden, sucht Rails nach ausstehenden Migrationen und löst den Fehler Migrations are pending aus. Ich möchte diese Prüfung bestehen, da diese 2 Apps unterschiedliche Migrationen haben. Und starte einfach den Server. Ich habe versucht:Wie können ausstehende Migrationen ignoriert werden?

config.active_record[:migration_error] = false 
config.active_record.migration_error = false 

aber kein Glück. Wie kann ich veranlassen, dass Rails diese ausstehenden Migrationen ignoriert? Überspringe diesen Check? Oder gibt es eine Möglichkeit, sie irgendwie zu benennen oder die passende mtime letzte Migrationsdatei zu setzen?

Antwort

2

dies in der entsprechenden Umgebungsdatei Versuchen in In RAILS_ROOT/config/Umgebungen/wie development.rb, staging.rb oder

config.active_record.migration_error = false 

Da Schienen speichern Migrationsinformationen in einer Tabelle namens schema_migrations production.rb. So können Sie die Version Ihrer Migration in diese Tabelle hinzufügen, um eine bestimmte Migration zu überspringen. Die Version ist der Zahlenstring, der im Dateinamen vor der Beschreibung steht.

Alternativ können Sie Ihre Migration zum Beispiel von

20160801105511_your_table.rb 

zu

.20160801105511_your_table.rb 

hinzufügen einen Punkt am Anfang des Dateinamens umbenennen. Ich hoffe, es wird funktionieren.

+0

Dies ist, was ich bereits getan habe – leemour

+0

Bitte überprüfen Sie meine aktualisierte Antwort –

0

Stellen Sie sicher, dass diese Konfiguration in Ihrer Konfiguration nicht zweimal vorhanden ist. Und starten Sie Ihren Webserver neu, nachdem Sie die Änderung übernommen haben.

+0

Das klingt eher wie ein Kommentar, nicht wie eine Antwort auf die Frage. – GhostCat