web-dev-qa-db-ja.com

現在の環境名を取得

Phoenix Frameworkでは、現在の環境の名前を取得するにはどうすればよいですか?

私はすでにenv変数をSystem.get_env("MIX_ENV")で読み取ってみましたが、値が常に設定されるとは限りません。

25
Chris

Mix.envは本番環境では機能しませんまたは、コンパイルされたリリース(Exrm/Distilleryを使用してビルドされた)を使用する他の環境、またはMixが利用できない場合。


ソリューションconfig/config.exsファイルで指定します。

config :your_app, env: Mix.env

その後、次のようにアプリケーションで環境atomを取得できます。

Application.get_env(:your_app, :env)
#=> :prod
50
Sheharyar

Mix.env/0

iex(1)> Mix.env
:dev
13
Chris

これで、デフォルトで生成された各環境設定ファイル(例:_prod.exs_)で、環境atomが最後の行に設定されていることがわかります。

_config :your_app, :environment, :prod_

その後、Application.get_env(:your_app, :environment)を使用して取得できます。

作成したカスタム環境設定でも同じことができます。

1
xji

Mix.env/0をアプリケーション構成に追加する代わりに、モジュール属性を使用することもできます。モジュール属性が評価されるため、これは本番環境でも機能しますコンパイル時

defmodule MyModule do
  @env Mix.env()

  def env, do: @env
end

特定の場所でのみ環境が必要な場合(アプリケーションスーパーバイザを起動するときなど)、これはより簡単な解決策になる傾向があります。

0
Sascha Wolf