获取当前环境名称

时间:2016-01-26 09:49:49

标签: elixir phoenix-framework

在凤凰城框架中,我如何获得当前环境的名称?

我已尝试使用env阅读System.get_env("MIX_ENV")个变量,但该值并非始终设置。

4 个答案:

答案 0 :(得分:45)

Mix.env在生产或您使用已编译版本(使用Exrm / Distillery构建)或Mix不可用的其他环境中不起作用。< / p>

解决方案是在config/config.exs文件中指定它:

config :your_app, env: Mix.env

然后,您可以在应用程序中获取环境原子:

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

答案 1 :(得分:11)

您可以使用Mix.env/0

iex(1)> Mix.env
:dev

答案 2 :(得分:3)

Mix.env/0放入应用程序配置的另一种方法是使用模块属性。这也可以在生产环境中使用,因为模块属性是在编译时评估

defmodule MyModule do
  @env Mix.env()

  def env, do: @env
end

如果仅在特定位置需要环境(例如,在启动应用程序管理程序时),这通常是更简单的解决方案。

答案 3 :(得分:1)

现在,在默认情况下生成的每个环境配置文件(例如prod.exs)中,您都会看到在最后一行设置了环境原子:

config :your_app, :environment, :prod

然后您可以使用Application.get_env(:your_app, :environment)来获取它。

您可以在创建的任何自定义环境配置中执行相同的操作。