tutorial mac language framework book elixir phoenix-framework

elixir - mac - Mix.env/0 equivalente en env de producción?



phoenix framework download (1)

Mix.env / 0 funciona correctamente en mix phoenix.server , pero falla al llamar en un entorno de producción que está construido con exrm. Tiene sentido porque la mezcla no está incluida en la versión de lanzamiento, pero ¿hay algún equivalente de Mix.env / 0?

(UndefinedFunctionError) undefined function Mix.env/0 (module Mix is not available)

Estoy usando Mix.env / 0 como este en algún código:

if Mix.env == :dev do # xxxxxx else # xxxxxx end


Simplemente puede definir un valor de configuración para el entorno:

config/prod.exs

config :my_app, :environment, :prod

config/dev.exs

config :my_app, :environment, :dev

Luego puede verificar ese valor utilizando Application.get_env/3

if Application.get_env(:my_app, :environment) == :dev do

Sin embargo, recomendaría dar más contexto. Supongamos que desea aplicar condicionalmente un complemento de autenticación en la producción, podría establecer la configuración en:

config :my_app, MyApp.Authentication, active: true if Application.get_env(:my_app, MyApp.Authentication) |> Keyword.get(:active) do #add the plug

De esta manera, sus condiciones se basan en características en lugar de en entornos. Puede activarlos y desactivarlos independientemente del entorno.