2016-07-28 11 views
1

Ich lerne gerade Phoenix und Elixir Ich bin verwirrt, was ist der beste Weg, um Umgebungsvariablen für mehrere Maschinen und Umgebungen zu behandeln? Ich laufe immer wieder auf verschiedene Ansätze ein, indem ich System.get_env, .env-Dateien und Erwähnungen von Mix env's benutze. Ich lese auch über Probleme beim Kompilieren von env-Variablen bei der Bereitstellung.Pheonix Framework Umgebungsvariablen

Hat jemand eine Erklärung, wie Mix-Variablen, Systemumgebungsvariablen und mögliche .env-Dateien oder .secret-Dateien für lokale Entwicklungs-, Stage- und Produktionsserver verwendet werden sollten?

Ich habe vor kurzem in Rails und Python hauptsächlich gearbeitet, so dass vielleicht ein hilfreiches kontextuelles Stück.

Danke für die Hilfe, Cory

Antwort

0

ich persönlich mit dem, was Phoenix wird Ihnen standardmäßig zu geben, zum Beispiel Verwenden von Konfigurationsdateien für verschiedene Umgebungen. Da Konfigurationsdateien für die Anwendungskonfiguration gedacht sind, z.B. Wenn Sie Datenbankadapter konfigurieren, werden sie in die Quellcodeverwaltung eingecheckt. Diese werden standardmäßig von der Umgebungsvariablen MIX_ENV gesteuert. Wenn Sie an der Unterseite des Haupt config/config.exs Datei anschauen, werden Sie bemerken dies:

import_config "#{Mix.env}.exs" 

Von dem, was ich aus dem documentation verstehen, Mix.env ist nur eine Abkürzung für das Erhalten der MIX_ENV Wert.

Phoenix enthält Konfigurationsdateien für "develop", "prod" und "test" (alle im Verzeichnis config), die Sie für Ihre eigenen Zwecke ändern können. Sie können auch einfach weitere Konfigurationen hinzufügen. Wenn Sie beispielsweise eine "Staging" -spezifische Konfiguration haben möchten, setzen Sie einfach auf dem entsprechenden Server und erstellen Sie config/staging.exs.

Bei sensiblen Informationen wie API-Schlüsseln sind Umgebungsvariablen besser, da sie nicht in die Quellcodeverwaltung eingecheckt und leicht geändert werden können. Sie können auf diese env-Variablen in Ihren Konfigurationsdateien oder von jedem beliebigen Ort in Ihrer Anwendung aus zugreifen.

Hoffe, dass hilft!