如何读取 Phoenix / Elixir 中的配置变量?
How to read config variable in Phoenix / Elixir?
我想在 my/config/config.exs
文件中设置我的应用程序的标题:
config :my, My.Endpoint,
url: [host: "localhost"],
root: Path.dirname(__DIR__),
secret_key_base: "secret",
title: "My App"
我如何阅读 title
之后才能在模板中使用它?类似于:
<div>
Title of my app is <%= ??? %>
</div>
我试了conn.title
,它说没有这样的密钥。但是,当我尝试 conn.secret_key_base
时,它起作用了。为什么?
您可以使用Application.get_env(:my, :title)
如果你深入了解配置是如何将配置值添加到关键字列表的函数,稍后你可以在你的应用程序中访问它们
config/2
取一个键并将其映射到 keyword_list,
config/3
取一个键并添加键 keyword_list 作为值。
由于您使用的是 config/3
,因此它会在 My.Endpoint 下命名您的配置,这将有效 Application.get_env(:my, My.Endpoint, :title)
get_env 函数是 Elixir/Erlang 核心的应用程序模块的一部分。
此函数 returns 应用程序环境中特定键的值。
考虑到您的配置,您可以这样访问 title
属性:
Application.get_env(:my, My.Endpoint)[:title]
第三个参数是当config key不存在时传递一个默认值
为了明确区分我的自定义配置和 phoenix 的配置以及我使用的其他模块:
config :ace, :config,
root: Path.dirname(__DIR__),
title: "Ace"
然后您使用 get_env 调用检索值,例如:
iex> Application.get_env(:ace, :config)[:title]
"Ace"
假设在 dev.ex 文件中你有一个配置变量
config :app_name, AppName.Endpoint,
api_prefix: "api/v2",
api_host: "http://0.0.0.0",
api_port: "3000"
您可以获取所有三个配置变量
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]
我想在 my/config/config.exs
文件中设置我的应用程序的标题:
config :my, My.Endpoint,
url: [host: "localhost"],
root: Path.dirname(__DIR__),
secret_key_base: "secret",
title: "My App"
我如何阅读 title
之后才能在模板中使用它?类似于:
<div>
Title of my app is <%= ??? %>
</div>
我试了conn.title
,它说没有这样的密钥。但是,当我尝试 conn.secret_key_base
时,它起作用了。为什么?
您可以使用Application.get_env(:my, :title)
如果你深入了解配置是如何将配置值添加到关键字列表的函数,稍后你可以在你的应用程序中访问它们
config/2
取一个键并将其映射到 keyword_list,
config/3
取一个键并添加键 keyword_list 作为值。
由于您使用的是 config/3
,因此它会在 My.Endpoint 下命名您的配置,这将有效 Application.get_env(:my, My.Endpoint, :title)
get_env 函数是 Elixir/Erlang 核心的应用程序模块的一部分。
此函数 returns 应用程序环境中特定键的值。
考虑到您的配置,您可以这样访问 title
属性:
Application.get_env(:my, My.Endpoint)[:title]
第三个参数是当config key不存在时传递一个默认值
为了明确区分我的自定义配置和 phoenix 的配置以及我使用的其他模块:
config :ace, :config,
root: Path.dirname(__DIR__),
title: "Ace"
然后您使用 get_env 调用检索值,例如:
iex> Application.get_env(:ace, :config)[:title]
"Ace"
假设在 dev.ex 文件中你有一个配置变量
config :app_name, AppName.Endpoint,
api_prefix: "api/v2",
api_host: "http://0.0.0.0",
api_port: "3000"
您可以获取所有三个配置变量
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]