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?
5 réponses
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.
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"
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]
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)