首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mix.Config

用于定义,阅读和合并应用程序配置的模块。

通常,这个模块用于定义你自己的配置:

use Mix.Config

config :plug,
  key1: "value1",
  key2: "value2"

import_config "#{Mix.env}.exs"

所有的config/*宏,包括import_config/1,都被用来帮助定义这样的配置文件。

此外,该模块提供了类似的功能read!/1merge/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_pathsMix.Config.LoadError将会引发异常。

read_wildcard!(path, loaded_paths \ [])

将通配符提供的许多配置文件读入单个配置。

引发一个错误,如果path是一个具体的文件名%28,没有通配符%29,但对应的文件不存在;如果path匹配没有文件,也没有引发错误。

loaded_paths已读取的配置文件列表。

validate!(config)

验证配置。

扫码关注腾讯云开发者

领取腾讯云代金券