Mix.Config
Mix.Config
用于定义,阅读和合并应用程序配置的模块。
通常,这个模块用于定义你自己的配置:
use Mix.Config
config :plug,
key1: "value1",
key2: "value2"
import_config "#{Mix.env}.exs"
所有的config/*
宏,包括import_config/1
,都被用来帮助定义这样的配置文件。
此外,该模块提供了类似的功能read!/1
,merge/2
和朋友,帮助操纵一般配置。
配置集使用Mix.Config
将设置应用程序env,以便Application.get_env/3
和其他Application
函数可以在运行或编译时使用来检索或更改配置。
例如,:key1
应用价值:plug
%28见%29上面的内容可以通过以下方式检索:
"value1" = Application.fetch_env!(:plug, :key1)
摘要
功能
config(app, opts)
配置给定的应用程序。
config(app, key, opts)
配置给定应用程序的给定键。
import_config(path_or_wildcard)
从给定的文件导入配置。
merge(config1, config2)
合并两种配置
persist(config)
通过修改配置的应用程序环境来保持给定的配置
read!(file, loaded_paths \ [])
读取和验证配置文件。
read_wildcard!(path, loaded_paths \ [])
将通配符提供的许多配置文件读入单个配置中。
validate!(config)
验证配置
函数
config(app, opts) (macro)
配置给定的应用程序。
关键字列表总是被深度合并。
实例
给出opts
被合并到给定的app
中指定的键覆盖冲突的键。opts
例如,以下声明:
config :lager,
log_level: :warn,
mode: :truncate
config :lager,
log_level: :info,
threshold: 1024
将具有以下最后配置:
[log_level: :info, mode: :truncate, threshold: 1024]
可以在运行或编译时检索这个最终配置:
Application.get_all_env(:lager)
config(app, key, opts) (macro)
配置给定应用程序的给定键。
关键字列表总是被深度合并。
实例
给出opts
的现有值。key
在给定的app
中指定的键覆盖冲突的键。opts
例如,鉴于以下两种组合:
config :ecto, Repo,
log_level: :warn,
adapter: Ecto.Adapters.Postgres
config :ecto, Repo,
log_level: :info,
pool_size: 10
的配置的最终值。Repo
中的键:ecto
申请如下:
[log_level: :info, pool_size: 10, adapter: Ecto.Adapters.Postgres]
这个最终值可以在运行时检索或编译时使用:
Application.get_env(:ecto, Repo)
import_config(path_or_wildcard) (macro)
从给定的文件导入配置。
如果path_or_wildcard
是通配符,则将导入与该通配符匹配的所有文件; 如果没有文件匹配通配符,则不会引发错误。如果path_or_wildcard
不是通配符而是单个文件的路径,那么该文件将被导入; 如果文件不存在,则会引发错误。这种行为类似于read_wildcard!/1
。
如果PATH/通配符是一个相对路径/通配符,它将相对扩展到当前配置文件所在的目录。
实例
这通常用于模拟跨环境的配置:
import_config "#{Mix.env}.exs"
或者从伞式项目中导入儿童的文件:
import_config "../apps/*/config/config.exs"
merge(config1, config2)
合并两种配置。
在冲突情况下,每个应用程序的配置与具有比第一个更高的首选项的三中的值合并。
实例
iex> Mix.Config.merge([app: [k: :v1]], [app: [k: :v2]])
[app: [k: :v2]]
iex> Mix.Config.merge([app1: []], [app2: []])
[app1: [], app2: []]
persist(config)
通过修改配置的应用程序环境来保持给定的配置。
config应该是{app, app_config}元组或%{app => app_config}映射的列表,其中app是要配置的应用程序,并且app_config是每个应用程序的配置(作为键值对)。
返回配置的应用程序。
实例
Mix.Config.persist(logger: [level: :error], my_app: [my_config: 1])
#=> [:logger, :my_app]
read!(file, loaded_paths \ [])
读取和验证配置文件。
file
要读取的配置文件的路径。如果该文件不存在,或者加载该文件时出错,则Mix.Config.LoadError
将引发例外情况。
loaded_paths
是先前读取的配置文件的列表。如果file
存在loaded_paths
,Mix.Config.LoadError
将会引发异常。
read_wildcard!(path, loaded_paths \ [])
将通配符提供的许多配置文件读入单个配置。
引发一个错误,如果path
是一个具体的文件名%28,没有通配符%29,但对应的文件不存在;如果path
匹配没有文件,也没有引发错误。
loaded_paths
已读取的配置文件列表。
validate!(config)
验证配置。