Comment lire la variable de configuration dans Phoenix / Elixir?

j'aimerais mettre le titre de mon application my/config/config.exs fichier:

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

Comment puis-je lire title plus tard pour l'utiliser dans le modèle? Quelque chose comme:

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

j'ai essayé conn.title, et il le dit il n'y a pas de clé. Mais, quand j'ai essayer conn.secret_key_base cela fonctionne. Pourquoi?

33
demandé sur IgorekPotworek 2016-03-01 17:28:32

5 réponses

Vous pouvez utiliser Application.get_env(:my, :title)

22
répondu Sasha Fonseca 2016-03-01 14:55:47

get_env la fonction fait partie du module D'Application du noyau Elixir/Erlang.

Cette fonction retourne la valeur d'une clé spécifique dans l'application de l'environnement. Compte tenu de votre configuration, vous accéderez au title propriété de cette façon:

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

le troisième paramètre est pour passer une valeur par défaut lorsque la clé de configuration n'existe pas.

51
répondu Tiago Henrique Engel 2016-03-02 18:03:17

pour avoir une séparation claire entre ma configuration personnalisée et la configuration pour phoenix et les autres modules que j'ai utilisés:

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

et ensuite vous récupérez la valeur en utilisant un appel get_env comme:

iex> Application.get_env(:ace, :config)[:title]
"Ace" 
4
répondu iheggie 2018-04-08 12:43:19

disons dans dev.ex fichier que vous avez une config variables

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

vous pouvez récupérer les trois variables de configuration

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] 
3
répondu Jagdish N 2018-04-20 14:50:06

si vous regardez sous le capot comment la config est juste une fonction qui ajoute des valeurs de configuration à une liste de mots-clés et plus tard vous pouvez y accéder dans votre application

config/2 prend une clé et l'associe à keyword_list, config/3 prend une clé et ajoute une touche de keyword_list comme valeur.

puisque vous utilisez config/3 il nomme votre configuration sous la mienne.Paramètre cela fonctionnerait Application.get_env(:my, My.Endpoint, :title)

0
répondu allyraza 2018-02-26 11:24:01