Frage

Ich habe einen Code, den ich von einem Initialisierer betreibe, und er funktioniert einwandfrei. (Es speichert Standardeinstellungen von einer YAML -Datei in der Datenbank für die Rails-Settings-Cache Juwel.)

Aber wenn ich dies auf Travis CI betreibe, scheitert der Initialisierer, da es eine Migration von Grund auf neu macht, da die Tabelle noch nicht existiert.

Gibt es eine Art, Code auszuführen? nach Die Migration, aber bevor die Anwendung beginnt?

War es hilfreich?

Lösung

Während ich dies nicht gerne tue, kann ein einfacher Weg, um den Initialisierer während der DB zu verhindern: Migrieren, aber das Ausführen von Anwendungsstart oder Testlauf besteht darin, ihn in einen Klausel zu wickeln, wenn die Tabelle vorhanden ist. Wenn Sie also Ihren vorhandenen Initializer -Code nehmen und ihn einwickeln

if ActiveRecord::Base.connection.table_exists? 'table_name'
   ....
end

Wo 'table_name' der Name der fehlenden Tabelle ist, rake db: migrieren und der Spezifikationslauf sollte in der Lage sein, erfolgreich abzuschließen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top