tutorial mac language framework español elixir phoenix-framework

elixir - mac - phoenix framework tutorial



¿Cómo se lee la variable de configuración en Phoenix/Elixir? (5)

Digamos que en el archivo dev.ex tiene una variable de configuración

config :app_name, AppName.Endpoint, api_prefix: "api/v2", api_host: "http://0.0.0.0", api_port: "3000"

Puedes buscar las tres variables de configuración

Application.get_env(:app_name, AppName.Endpoint)[:api_prefix] Application.get_env(:app_name, AppName.Endpoint)[:api_host] Application.get_env(:app_name, AppName.Endpoint)[:api_port]

Me gustaría establecer el título de mi aplicación en my/config/config.exs archivo my/config/config.exs :

config :my, My.Endpoint, url: [host: "localhost"], root: Path.dirname(__DIR__), secret_key_base: "secret", title: "My App"

¿Cómo puedo leer el title más tarde para usarlo en la plantilla? Algo como:

<div> Title of my app is <%= ??? %> </div>

Intenté conn.title y dice que no hay tal clave. Pero, cuando intento conn.secret_key_base , funciona. ¿Por qué?


La función get_env es parte del módulo de aplicación del núcleo de Elixir / Erlang.

Esta función devuelve el valor de una clave específica en el entorno de la aplicación. Teniendo en cuenta su configuración, accederá a la propiedad del title esta manera:

Application.get_env(:my, My.Endpoint)[:title]

El tercer parámetro es para pasar un valor predeterminado cuando la clave de configuración no existe.


Para tener una separación clara entre mi configuración personalizada y la configuración para Phoenix y otros módulos que utilicé:

config :ace, :config, root: Path.dirname(__DIR__), title: "Ace"

Y luego recuperas el valor usando una llamada get_env como:

iex> Application.get_env(:ace, :config)[:title] "Ace"


Puede usar Application.get_env(:my, :title)


si observa bajo el capó cómo la configuración es solo una función que agrega valores de configuración a una lista de palabras clave y luego puede acceder a ellos en su aplicación

config/2 toma una clave y la asigna a keyword_list, config/3 toma una clave y agrega la clave con keyword_list como valor.

Dado que está utilizando config/3 , namesapces su configuración en My.Endpoint esto funcionaría Application.get_env(:my, My.Endpoint, :title)