2016-10-25 11 views
0

dev.exsファイルにenvファイルの値を取得しようとしています。しかし、彼らは無限に来ています。dev.exのSystem.get_env Elixir Phoenix

config :extractor, :mailgun, 
    domain: System.get_env['MAILGUN_DOMAIN'], 
    key: System.get_env['MAILGUN_KEY'] 

私がiexに行くと、実際の値になります。私のアプリmix.exsでは、私はどんなのenvのために指定されていないこの

def application do 
    [mod: {Extractor, []}, 
    applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger, :gettext, 
        :phoenix_ecto, :postgrex, :tzdata, :httpoison, :dotenv, :quantum]] 
    end 

そのようなdotenvを追加しました。そのアプリケーションリストにあります。

は、私はすでにこの方法だけでなく

def application do 
    [mod: {Extractor, []}, 
    applications: app_list(Mix.env)] 
    end 


    defp app_list(:dev), do: [:dotenv | app_list] 
    defp app_list(:test), do: [:dotenv | app_list] 
    defp app_list(_), do: app_list 
    defp app_list, do: [ 
    :phoenix, 
    :phoenix_pubsub, 
    :phoenix_html, 
    :cowboy, 
    :logger, 
    :gettext, 
    :phoenix_ecto, 
    :postgrex, 
    :tzdata, 
    :httpoison, 
    :dotenv, 
    :quantum 
    ] 

しかし、運だけでなく..任意のヘルプを試してみましたか?

+3

https:// github。com/avdi/dotenv_elixirにはREADMEの先頭に大きな警告がありますが、これは(幾分)記述/説明しています。「Elixirには優れた設定システムがあり、このdotenv実装にはコンパイル時に利用できないという重大な制限があります。 ... "。 – Dogbert

答えて

0

ダブルクォートstringsをキーとして使用し、シングルクォートのシャルリストは使用しないでください。

System.get_env["LOGNAME"] 
> "patnowak" 

System.get_env['LOGNAME'] 
> nil 
+1

私は両方を試してみました..何も働かなかった – ijunaidfarooq

1

https://github.com/avdi/dotenv_elixirで警告を見てみるとhttps://stackoverflow.com/a/20909045/111021を参照すると、私は~/.bashrcで、この思い付いた:

alias mix='env $([ -f .env ] && cat .env | xargs) mix' 
alias iex='env $([ -f .env ] && cat .env | xargs) iex' 

これは、一般的なユースケースmix phoenix.serveriex -S mixのために動作します。あなたのdotenvが引用符やスペースのような複雑な値を持っている場合は、さらにコマンドを微調整する必要があります。


警告:あなたはmix releasehttps://github.com/bitwalker/distilleryのようなものを使用する場合は、パッケージに混入したenv VARSを得ることができます。

0

dotenv(githubページhttps://github.com/avdi/dotenv_elixirに記載されているように、Elixirはenv設定を処理するために非常に優れたシステムを持っています)を使う必要はないと思います。

ことは、これを試してみて、それはあなたのためにそれをしないなら、私に教え:

  1. あなたはENV変数をエクスポートし、プロジェクトのルートに簡単な.envファイルを作成します。
.env を
export MAILGUN_DOMAIN=mailgundomain.com 
... 
  1. サーバまたはiexを起動する前に、source .envを送信してください。あなたのdev.exsで定義された
  2. アクセスしますENV変数を次のよう

Application.get_env(:extractor, :mailgun)[:domain]

、代わりに単一引用符の二重引用符を使用します。エリクサーの視点から、 'foo'と 'foo'は2つの異なるものです。

希望すると助かります!

関連する問題