Reputation: 15336
I'd like to set the title of my app in my/config/config.exs
file:
config :my, My.Endpoint,
url: [host: "localhost"],
root: Path.dirname(__DIR__),
secret_key_base: "secret",
title: "My App"
How can I read title
later to use it in template? Something like:
<div>
Title of my app is <%= ??? %>
</div>
I tried conn.title
and it says there's no such key. But, when I try conn.secret_key_base
it works. Why?
Upvotes: 60
Views: 28668
Reputation: 772
Let's say in dev.ex file you have a config variables
config :app_name, AppName.Endpoint,
api_prefix: "api/v2",
api_host: "http://0.0.0.0",
api_port: "3000"
You can fetch all three config variables
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]
Upvotes: 20
Reputation: 2047
To have clear separation between my custom configuration and configuration for phoenix and other modules I used:
config :ace, :config,
root: Path.dirname(__DIR__),
title: "Ace"
And then you retrieve the value using a get_env call like:
iex> Application.get_env(:ace, :config)[:title]
"Ace"
Upvotes: 6
Reputation: 1466
if you look under the hood how the config is just a function that add config values to a keyword list and later you can access them in your app
config/2
takes a key and maps it to keyword_list,
config/3
takes a key and adds key with keyword_list as value.
Since you are using config/3
it namesapces your config under My.Endpoint this would work Application.get_env(:my, My.Endpoint, :title)
Upvotes: 1
Reputation: 3663
The get_env function is part of the Application module from the Elixir/Erlang core.
This function returns the value for a specific key in the app's environment.
Considering your configuration, you would access the title
property this way:
Application.get_env(:my, My.Endpoint)[:title]
The third parameter is for passing a default value when the config key doesn't exist.
Upvotes: 81