查看源代码 Config.Reader (Elixir v1.16.2)
用于读取使用 Config
定义的配置文件的 API。
作为提供者
Config.Reader
也可以用作 Config.Provider
。 配置提供者在发布期间用于自定义应用程序的配置方式。 当用作提供者时,它需要一个参数:要读取和加载的文件的配置路径(如 Config.Provider.config_path/0
所述),用于在系统启动期间使用。
例如,如果您期望目标系统在绝对路径中具有配置文件,则可以在 mix.exs
的 def project
部分中添加以下内容:
releases: [
demo: [
config_providers: [
{Config.Reader, "/etc/config.exs"}
]
]
]
或者,如果您想在发布时读取自定义路径:
config_providers: [{Config.Reader, {:system, "RELEASE_ROOT", "/config.exs"}}]
您也可以将关键字列表选项传递给阅读器,其中 :path
是必填键:
config_providers: [
{Config.Reader,
path: "/etc/config.exs",
env: :prod,
imports: :disabled}
]
请记住,Mix 默认情况下会加载 config/runtime.exs
。 有关更多示例和场景,请参阅 Config.Provider
模块。
总结
函数
为给定的 file
评估配置 contents
。
接受与 read!/2
相同的选项。
合并两个配置。
配置将合并在一起,第二个配置中的值优先于第一个配置中的值(如果发生冲突)。 如果两个值都设置为关键字列表,则会深度合并它们。
示例
iex> Config.Reader.merge([app: [k: :v1]], [app: [k: :v2]])
[app: [k: :v2]]
iex> Config.Reader.merge([app: [k: [v1: 1, v2: 2]]], [app: [k: [v2: :a, v3: :b]]])
[app: [k: [v1: 1, v2: :a, v3: :b]]]
iex> Config.Reader.merge([app1: []], [app2: []])
[app1: [], app2: []]
读取配置文件。
选项
:imports
- 已导入路径的列表,或:disabled
以禁用导入:env
- 配置文件运行的环境。 有关示例用法,请参阅Config.config_env/0
:target
- 配置文件运行的目标。 有关示例用法,请参阅Config.config_target/0
读取给定的配置文件并返回带有其导入的配置。
接受与 read!/2
相同的选项。 不过请注意,:imports
选项无法在 read_imports!/2
中禁用。