Получить текущее имя среды

В Phoenix Framework, как я могу получить текущее имя среды?

Я уже пробовал читать переменные env с помощью System.get_env("MIX_ENV"), но значение не всегда установлено.

Ответ 1

Вы можете использовать Mix.env/0:

iex(1)> Mix.env
:dev

Ответ 2

Mix.env не работает в производственных или других средах, где вы используете скомпилированные выпуски (созданные с использованием Exrm/Distillery) или когда Mix просто недоступен.


Решение заключается в том, чтобы указать его в файле config/config.exs:

config :your_app, env: Mix.env

Затем вы можете получить атом среды в вашем приложении следующим образом:

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

Ответ 3

Теперь в каждом файле конфигурации среды (например, prod.exs), сгенерированном по умолчанию, вы увидите, что атом среды устанавливается в последней строке:

config :your_app, :environment, :prod

Затем вы можете использовать Application.get_env(:your_app, :environment) чтобы получить его.

Вы можете сделать то же самое в любой пользовательской конфигурации среды, которую вы создаете.