Phoenix Frameworkでは、現在の環境の名前を取得するにはどうすればよいですか?
私はすでにenv
変数をSystem.get_env("MIX_ENV")
で読み取ってみましたが、値が常に設定されるとは限りません。
Mix.env
は本番環境では機能しませんまたは、コンパイルされたリリース(Exrm/Distilleryを使用してビルドされた)を使用する他の環境、またはMix
が利用できない場合。
ソリューションはconfig/config.exs
ファイルで指定します。
config :your_app, env: Mix.env
その後、次のようにアプリケーションで環境atomを取得できます。
Application.get_env(:your_app, :env)
#=> :prod
iex(1)> Mix.env
:dev
これで、デフォルトで生成された各環境設定ファイル(例:_prod.exs
_)で、環境atomが最後の行に設定されていることがわかります。
_config :your_app, :environment, :prod
_
その後、Application.get_env(:your_app, :environment)
を使用して取得できます。
作成したカスタム環境設定でも同じことができます。
Mix.env/0
をアプリケーション構成に追加する代わりに、モジュール属性を使用することもできます。モジュール属性が評価されるため、これは本番環境でも機能しますコンパイル時。
defmodule MyModule do
@env Mix.env()
def env, do: @env
end
特定の場所でのみ環境が必要な場合(アプリケーションスーパーバイザを起動するときなど)、これはより簡単な解決策になる傾向があります。