Mix.env/0はmix phoenix.server
で正しく機能しますが、exrmで構築された本番環境では呼び出すことができません。ミックスはリリースビルドに含まれていないので意味がありますが、Mix.env/0に相当するものはありますか?
(UndefinedFunctionError) undefined function Mix.env/0 (module Mix is not available)
私はいくつかのコードでこのようにMix.env/0を使用しています:
if Mix.env == :dev do
# xxxxxx
else
# xxxxxx
end
環境の構成値を定義するだけです。
config/prod.exs
config :my_app, :environment, :prod
config/dev.exs
config :my_app, :environment, :dev
次に、 Application.get_env/ を使用してその値を確認できます。
if Application.get_env(:my_app, :environment) == :dev do
ただし、これにより多くのコンテキストを与えることをお勧めします。本番環境で認証プラグインを条件付きで適用したい場合、構成を次のように設定できます。
config :my_app, MyApp.Authentication,
active: true
if Application.get_env(:my_app, MyApp.Authentication) |> Keyword.get(:active) do
#add the plug
このように、条件は環境ベースではなく機能ベースになります。環境に関係なくオンとオフを切り替えることができます。