Wie lade ich Umgebungsvariablen für ein Phoenix Framework-Projekt?

8

Ich habe eine Phoenix-App erstellt, dann das Bambus-Modul zum Senden von E-Mails hinzugefügt und meine erste E-Mail mit Elixir heute Nachmittag geschickt, aber ich musste den Benutzernamen und Passwort in config.exs .

Ich habe diesen Artikel gelesen und eine .env-Datei eingerichtet in der Wurzel von meinem Phoenix-Projekt, und ich versuche, die Umgebungsvariablen mit den folgenden Aussagen innerhalb der config.exs -Datei zu laden.

%Vor%

Allerdings werden die E-Mails nicht gesendet, und Bambus gibt mir eine ziemlich kryptische Fehlermeldung.

Ich baue die Phoenix-App mit dem folgenden Befehl aus dem Terminal,

%Vor%

und ich sende die E-Mails manuell in einer iex-Sitzung mit einem Befehl ähnlich dem folgenden,

%Vor%

aber die E-Mails werden nur gesendet, wenn der Benutzername / das Passwort in der config.exs -Datei fest codiert sind. Wie kann ich die .env Datei verwenden, die ich eingerichtet habe, damit ich den Benutzernamen / das Passwort nicht fest in die config.exs schreiben muss?

Hinweis: Ich verwende OS X und verwende die Fischhülle.

    
Chris 15.02.2017, 18:41
quelle

4 Antworten

2

Ich habe am Ende eine smtp.exs Datei im Verzeichnis config erstellt, die wie folgt aussieht,

smtp.exs

%Vor%

und fügte dann config.exs

hinzu

import_config "smtp.exs"

Wenn ich nun die Anwendung mit iex -S mix lade, wird sie immer in diese Anwendungsvariablen geladen, und ich habe keine Quellumgebungsvariable für jede Terminalsitzung.

    
Chris 18.02.2017, 04:08
quelle
6

Sie können das conform-Modul in Ihrem Projekt verwenden. Ссылка

Dies ist ein Hilfsmodul, das Ihnen die Möglichkeit bietet, die env-Konfiguration zur Laufzeit zu lesen.

config.exs Beispiel

%Vor%

In Ihrem Modul

%Vor%

In Ihren iex-Typ

%Vor%     
Oleg Samorai 16.02.2017 07:44
quelle
0

Wie der Artikel, über den Sie geschrieben haben, verwende ich ENV vars für Phoenix von meinem System. Erstellen Sie sie einfach über den Export:

export SMTP_USERNAME=you_variable

und so weiter und Phoenix wird sie sehen und zur Startzeit des Servers kommen. Es ist auch möglich, .env-Datei zu verwenden, aber ich verwende es nur mit 'Heroku local'.

Überprüfen Sie dieses Hex dotenv_elixir , aber es ist wirklich kein Elixier Weg.

    
khusnetdinov 15.02.2017 19:39
quelle
0

Sie können alle Ihre Umgebungsvariablen in eine Datei mit dem Namen .env.dev oder .env.prod setzen (vergessen Sie nicht, .env.* zur Datei .gitignore hinzuzufügen):

%Vor%

Laden Sie diese Datei und führen Sie den Phoenix-Server aus:

%Vor%

Denken Sie daran, diese Syntax zu verwenden

%Vor%

Anstelle dessen

%Vor%

um ENV-Variablen zur Laufzeit zu laden.

    
Iwan B. 03.04.2018 21:46
quelle

Tags und Links