Elixir Config

一个简单的基于关键字的配置API。

例子

该模块通常用于定于应用配置,通常在 config/config.exs 中:

import Config

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

import_config "#{config_env()}.exs"

import Config 会导入 config/2config/3config_env/0config_target/0import_config/1 函数来帮助你管理配置。

config/2config/3 用来为指定应用定义键值对配置。当 Mix 启动时,它会自动解析配置文件并将上述配置持久化到 :some_app 的应用环境中,然后你可以通过以下方式访问:

"value1" = Application.fetch_env!(:some_app, :key1)

最后, import_config "#{config_env()}.exs" 会根据配置的环境导入其他配置文件,如 config/dev.exsconfig/test.exs

ConfigConfig.Reader 模块下也提供了用于解析和读取配置的低级API。

避免在库中使用应用环境
如果你在编写供其他开发者调用的库,通常建议避免使用应用环境,因为应用环境是一个全局存储。同时注意,当库作为依赖时, config/config.exs 不会被解析,因为配置文件的含义是配置当前项目。

use Mix.Config 升级

Elixir的 Config 模块在 v1.9 引入,作为 Mix.Config 的替代,它专用于Mix且已弃用。

你可以分3步将 Mix.Config 替换成 Config 。第一步是在配置文件顶部将 use Mix.Config 替换成 import Config

第二步确保你的 import_config/1 调用没有通配符。如果有,你需要手动查找通配符,例如:

import_config "../apps/*/config/config.exs"

需要被替换成:

for config <- "../apps/*/config/config.exs" |> Path.expand(__DIR__) |> Path.wildcard() do
  import_config config
end

最后一步是将所有的 Mix.env() 调用替换成 config_env()

注意,工程文件中也不能使用 Mix.env() 。要在运行时查看环境可以添加以下配置:

# config.exs
...
config :my_app, env: config_env()

你只能在 mix.exs 文件和自定义Mix任务内访问 Mix 模块中的函数,这些都在 Mix.Tasks 命名空间内。

config/runtime.exs

对于运行时配置,可以使用 config/runtime.exs 文件。它在应用启动前执行,无论是通过 Mix 启动还是打包发布。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值