elixir - mac - ¿Cómo obtener un valor variable de los archivos de entorno en Phoenix?
phoenix framework download (2)
Está bien, encontré algo. Application.get_env/3
Elixir''s es el camino a seguir:
Pero el problema con esto es que el comando de acceso se vuelve muy largo para la situación actual:
# Set value in config/some_env_file.exs
config :my_large_app_name, MyLargeAppName.Endpoint,
http: [port: {:system, "PORT"}],
url: [host: "example.com"],
my_var: "MY ENV VARIABLE"
# Get it back
Application.get_env(:my_large_app_name, MyLargeAppName.Endpoint)[:my_var]
Una mejor manera sería definirlos en una sección separada:
config :app_vars,
a_string: "Some String",
some_list: [a: 1, b: 2, c: 3],
another_bool: true
Y accede a ellos de esta manera:
Application.get_env(:app_vars, :a_string)
# => "Some String"
O puedes buscar una list
de todos los pares clave-valor:
Application.get_all_env(:app_vars)
# => [a_string: "Some String", some_list: [a: 1, b: 2, c: 3], another_bool: true]
Estoy implementando mi primera aplicación Phoenix y he especificado los valores de una variable en mis archivos de entorno ( dev.exs
y prod.exs
).
Ahora estoy tratando de averiguar cómo acceder a ellos en mis controladores.
# config/dev.exs
config :my_app, MyApp.Endpoint,
http: [port: 4000],
debug_errors: true,
cache_static_lookup: false,
my_var: "DEVELOPMENT VALUE"
# config/prod.exs
config :my_app, MyApp.Endpoint,
http: [port: {:system, "PORT"}],
url: [host: "example.com"],
my_var: "PRODUCTION VALUE"
Tuve algún error con la solución @sheharyar, así que aquí significa:
Tuve que crear un nuevo bloque sin MyLargeAppName.Endpoint,
# Set value in config/some_env_file.exs
config :my_large_app_name,
my_var: "MY ENV VARIABLE"
y luego en tu codigo
Application.get_env(:my_large_app_name, :my_var)
ADVERTENCIA: como @ José Valim dijo que no puede establecer ningún nombre como clave :my_large_app_name
tiene que ser el mismo de su proyecto