2015-08-05 17 views
12

Sto cercando di ottenere un valore da un file di configurazione Phoenix in un controller.Problemi durante il recupero dei valori di configurazione nel controller Phoenix e/o nel modello

# config.exs 

use Mix.Config 

config :app_name, AppName.Endpoint, 
    url: [host: "localhost"], 
    debug_errors: false, 
    root: Path.expand("..", __DIR__) 

Application.get_env(:app_name, :url), ad esempio, sembra non restituire nulla.

Mi manca qualcosa?

+0

Leggendo il documento, sembra che sia possibile definire queste variabili env all'interno della funzione 'application' nel file' mix.exs', non all'interno della configurazione. http://elixir-lang.org/docs/v1.0/elixir/Application.html – Kernael

risposta

18

Come si può vedere nel docs for the Mix.Config module, ci sono due varianti di config: config/2 e config/3. Si utilizza la variante config/3 come si sta passando tre argomenti:

  • :app_name
  • AppName.Endpoint
  • un elenco di parole chiave ([url: ..., debug_errors: ...])

Ciò significa che si sta configurando la AppName.Endpoint chiave nell'ambiente dell'applicazione :app_name e impostarne il valore nell'elenco delle parole chiave (ricordare AppName.Endpoint è solo un atomo, quindi va bene usarlo come chiave). Per recuperare l'url, si avrebbe bisogno di fare qualcosa di simile:

Application.get_env(:app_name, AppName.Endpoint)[:url] 

Per ragioni di completezza, config/2 permette di impostare più coppie chiave-valore nel ENV per un'applicazione. I suoi argomenti sono, infatti, il nome dell'applicazione e un elenco di coppie chiave-valore.

+0

Era proprio così! Grazie per la spiegazione approfondita. – Tayler

Problemi correlati