web-dev-qa-db-ja.com

本番環境で同等のMix.env / 0?

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
19
hykw

環境の構成値を定義するだけです。

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

このように、条件は環境ベースではなく機能ベースになります。環境に関係なくオンとオフを切り替えることができます。

36
Gazler