2016-03-01 12 views
23

mi piacerebbe impostare il titolo della mia app in my/config/config.exs di file:Come leggere la variabile di configurazione in Phoenix/Elixir?

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

Come posso leggere title in seguito ad usarlo in modello? Qualcosa di simile:

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

ho provato conn.title e dice che non c'è tale chiave. Ma quando provo conn.secret_key_base funziona. Perché?

risposta

19

È possibile utilizzare Application.get_env(:my, :title)

+3

Grazie, ma non ha funzionato, è vuoto. –

+0

È necessario disporre dei file dev.exs, prod.exs e test.exs per ottenere le attuali configurazioni dell'ambiente. –

+2

Questa risposta non è corretta, almeno sul mio sistema. [tiagohngl] (https://stackoverflow.com/a/35754803/118220) dà il giusto incantesimo. – Cheezmeister

2

se si guarda sotto il cofano come il config è solo una funzione che aggiunge i valori di configurazione a un elenco di parole chiave e poi li si può accedere nella vostra applicazione

config/2 prende una chiave e lo associa a keyword_list, config/3 prende una chiave e aggiunge la chiave con keyword_list come valore.

Dal momento che si sta utilizzando è config/3 namesapces propria configurazione sotto My.Endpoint questo dovrebbe funzionare Application.get_env(:my, My.Endpoint, :title)

41

La funzione get_env fa parte del modulo di domanda dal nucleo Elisir/Erlang.

Questa funzione restituisce il valore per una chiave specifica nell'ambiente dell'app. Considerando la configurazione, si accede alla proprietà title in questo modo:

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

Il terzo parametro è per il passaggio di un valore predefinito quando la chiave di configurazione non esiste.

Problemi correlati