tutorial mac language framework book elixir phoenix-framework

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:

get_env (app, key, default // nil)

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