2016-10-11 3 views
2

Ich habe Schienen Anwendung mit Schienen 5 und Ruby 2.3 erstellt.
Ich möchte einige Änderungen in einigen Modelldateien hinzufügen und als neue Anwendung speichern. Ich möchte zwei Anwendungen in der Produktion als zwei ähnliche Anwendungen ausführen. Ich weiß, wie man den Controller unter Verwendung des Namespace versioniert, aber ich habe keine Lösung für Versionsschienenmodelle bekommen.Schienen wie die Modelle zu versionieren?

Antwort

2

Möchten Sie zwei Kopien der Anwendung in der Produktion unter verschiedenen Namespaces ausführen (z. B./v1/und/v2 /), die beide dieselbe Datenbank verwenden?

Es gibt keinen einfachen Weg, weil es keine gute Idee ist. Jedes Mal, wenn Sie zu einer Anwendung wechseln, müssen Sie daran denken, beides zu ändern - und schlimmer, wenn Sie in Zukunft weitere Versionen hinzufügen.

Wenn möglich, sollten Sie eine Codebasis teilen und eine Versionslogik in den Controller eingeben, der auf das Modell zugreift. Ihr Controller kann die Route überprüfen, die zum Treffen verwendet wurde (/ v1/oder/v2 /) und entsprechend reagieren.

Um eine Datenbank zwischen zwei Versionen Ihres Codes zu teilen, müssen Sie sicherstellen, dass alle Änderungen am Datenbankschema rückwärts- und vorwärtskompatibel sind, dh Sie können nur neue Tabellen oder Spalten hinzufügen (niemals umbenennen oder entfernen).

Wenn Sie die zwei Versionen Ihrer App nicht für die gemeinsame Nutzung derselben Datenbank benötigen, können Sie der neuen Version eine eigene Kopie der Datenbank geben (database: my_schema_v2 in config/database.yml).

Oder Sie könnten das v2 des Modells einen eigenen Tabellennamen geben:

class Product < ApplicationRecord 
    self.table_name = "products_v2" 
end 

Aber noch einmal, dass die Produkte bedeutet nicht zwischen den alten und neuen Versionen des Codes gemeinsam genutzt werden.

Verwandte Themen