Mix.env/0 等同于生产环境?
Mix.env/0 equivalent in production env?
Mix.env/0 在 mix phoenix.server
中正常工作,但在使用 exrm 构建的生产环境中无法调用。这是有道理的,因为 mix 未包含在发布版本中,但是是否有任何等效的 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/3
检查该值
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
这样,您的条件是基于特征而不是基于环境。无论环境如何,您都可以打开和关闭它们。
Mix.env/0 在 mix phoenix.server
中正常工作,但在使用 exrm 构建的生产环境中无法调用。这是有道理的,因为 mix 未包含在发布版本中,但是是否有任何等效的 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/3
检查该值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
这样,您的条件是基于特征而不是基于环境。无论环境如何,您都可以打开和关闭它们。