2016-08-07 14 views
4

Ich versuche, eine Staging-Umgebung einzurichten und Probleme zu lösen, wenn ich mit etwas anderem als prod für meine Mischung env kompiliere. Ich habe versucht, eine benutzerdefinierte env namens stag mit einer stag.exs Datei und alles, aber es scheint zu brechen. Ich bin mir ziemlich sicher sein, weil diese Linie I in mix.exs sehen:Einrichten einer Staging-Umgebung in Elixir mit Phoenix?

build_embedded: Mix.env == :prod, 
start_permanent: Mix.env == :prod, 

Das Problem ist, dass ich diese Zeile in allen meinen deps Ordnern als auch zu sehen. Bedeutet das, dass ich eine Mix.env von auch für meine Staging-Umgebungen verwenden sollte?

+0

nur ausführen: MIX_ENV = Hirsch Mix deps.get oder was Mischbefehl Sie wollten – BurmajaM

+0

Vielen Dank für die sich die Zeit zu beantworten. Ich habe genau das getan und es bombardiert, wenn du versuchst, es als Release-Binary zu machen. Ich habe die Antwort auf meine Frage gefunden (siehe meine Antwort unten). Danke noch einmal! – jeffskelton3

Antwort

9

Ich glaube nicht, dass ich die Frage richtig formuliert habe. Ich erstelle eine Release-Binärdatei und Probleme beim Bereitstellen in einem Staging-Kontext, wenn ich die MIX_ENV auf etwas anderes als prod festlegen. Ich habe versucht, eine benutzerdefinierte Umgebung namens stag für die Bereitstellung mit eigenen stag.exs Config-Datei zu erstellen, aber das war nicht wie erwartet funktioniert. Ich glaube, ich habe die Antwort gefunden, die ich gesucht habe:

Ich habe über einige Elixir IRC-Kanäle entdeckt, dass :prod in der Tat ein Build-Modus ist und sollte für alle Fälle verwendet werden, wo man beabsichtigt zu implementieren. Mit anderen Worten, meine Bereitstellungsbereitstellung sollte auf MIX_ENV=prod festgelegt werden und dann entweder Umgebungsvariablen für dynamische Konfigurationseinstellungen in der Datei prod.exs verwenden oder, wie in diesem Fall, dynamisch eine deployment-spezifische Konfiguration in prod.exs wie folgt laden:

deployment_config=System.get_env("DEPLOYMENT_CONFIG") 
import_config "./deployment_config/#{deployment_config}.exs" 

Dieser Ansatz löste mein Problem und ich bin jetzt glücklich in der Lage, verschiedene Bereitstellungen mit ihren eigenen benutzerdefinierten Konfigurationen in einem Release-Kontext auszuführen.

+0

Ich wollte nur sagen, dass dies sehr hilfreich für mich war und genau die Antwort, die ich suchte. AFAICT edeliver/distillery scheint auch so zu arbeiten, wie du es beschrieben hast und wird eine Version unter der: prod Umgebung erstellen, egal wie sehr du es sonst versuchst. Macht jetzt Sinn, warum es so ist, danke. – joeellis

+0

Das ist toller Mann. Freut mich zu hören, dass es geholfen hat. :-) – jeffskelton3