Wo ist der beste Ort zum speichern von Anwendungs-Parameter : Datenbank, Datei, code...?
Ich bin die Entwicklung einer Ruby on Rails-website, und ich habe eine "architektonische" Frage : meine Anwendung benötigt einige Parameter, und ich Frage mich, wo Sie zu speichern.
Konkret meine Bewerbung erhalten einige Anfragen, die ausgewertet werden und dann versendet werden. So, die Anfrage Modell müssen Attribute haben über diese Behandlungen : eine Validierung status und ein senden status. Zum Beispiel, Validierung status werden kann "akzeptiert", "abgelehnt" oder "warten". Senden status werden kann "gesendet", "warten", "Fehler bei der Versendung der" oder sowas. Ich habe zum speichern dieser status-codes Parameter irgendwo, aber ich weiß nicht, was ist die beste Lösung.
Konnte ich erstellen Sie ein Modell für jeden und speichern Sie in der Datenbank (und mit einem active record-Modell ValidationStatus zum Beispiel), aber : wäre es nicht eine übermäßige beißen, eine Datenbank zu erstellen/Modell für die Speicherung von Daten, wie Sie?
Konnte ich auch nur in der code ohne "speichern" Sie, ich könnte speichern Sie Sie in einer YAML-Datei...
Also eine einfachere Frage: wie gehen Sie mit Ihrer Anwendung Parameter in RoR?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es viele Globale Konfiguration plugins, die meisten von Ihnen Kreisen um die Idee des Ladens einer YAML-Datei an einem gewissen Punkt. Überprüfen Sie auf dieser Seite, dieses plugin und auch diese Railscast.
Habe ich Sie in die Datenbank. Ich habe eine Menge von diesen, und Sie sind alle ziemlich einfach Listen von strings. Die Tabellen sind alle gleich - id, name, Beschreibung.
Ich generieren von Modellen für Sie, anstatt eine tatsächliche Modell-Datei für jede. In app/models habe ich eine Datei namens active_record_enums.rb, das würde in deinem Fall etwa so Aussehen:
Dieser Datei müssen in einer config-Datei irgendwo; andere als das, es ist ziemlich einfach.
Ich bin nicht mit Ruby, aber ich werde Ihnen sagen, dass ich angefangen habe (in ASP.NET) Platzierung viele von Einstellungen in Web.Config-Datei (ähnlich wie eine YAML). Wie die Zeit ging auf, obwohl das system bis zu dem Punkt entwickelt, wo verschiedene Instanzen benötigt unterschiedliche Einstellungen. So, fast alle von Ihnen haben die Migration in die Datenbank. So...wenn werden Sie die Bereitstellung von mehreren Instanzen von Ihrer Website, würde ich dringend empfehlen, die Einstellungen in einer Tabelle der Datenbank (meiner hat nur einen Datensatz mit den Feldern für die verschiedenen Einstellungen). Wenn ich dies getan hatte, um zu beginnen, ich würde gespeichert haben, eine erhebliche Menge an Zeit.
Neige ich dazu, einfach nur ein
string
Spalte für jeden, und verwenden Sievalidates_inclusion_of
um festzulegen, was akzeptabel ist für Sie.Wenn Sie brauchen, um Dinge, die passieren (dh. E-Mails), wenn sich der status ändert, sehen Sie in der Verwendung der Fungiert Als State Machine plugin zu verwalten.
(Habe da gesehen, dass die Schienen geworfen, die oben erwähnt [Folge 85] - es sieht aus wie ein bisschen mehr "the rails way" als unten)
Ein weiterer Ansatz ist der Aufbau auf die bestehende Konfiguration Mechanismus in Schienen.
Lässt vermuten, es gibt zwei Arten von configs:
Für das erste Szenario, Artikel in "RAILS_ROOT + '/config/environment.rb'" arbeiten. Sehe gerade, dass die Namen sind captialised so sind Sie Ruby-Konstanten. Eine variation dieses ist ein Verweis auf eine andere Datei in diesem Umfeld.rb-Datei ...
Ort und relevanten config-Elemente in dieser Datei. Dies hat den Vorteil, dass Sie in der Lage, auf Sie verwiesen werden, unabhängig von Schienen.
Für Szenario 2 ein ähnlicher Ansatz kann getroffen werden. Platzieren Sie Elemente für die Entwicklung in "RAILS_ROOT + '/config/environments/development.rb'" oder so etwas wie
Ort und Umgebung und bestimmte Elemente auf, die erforderlichen Datei, und stellen Sie sicher, Sie beginnen mit Kappen. Und Folgen Sie dem gleichen Muster für test/prod (und andere, wenn es sein muss).
Den config-Elemente sind direkt in views und Controller (nicht sicher über die Modelle) einfach mit der Konstante name.