环境配置 (Nex.Env)

Nex 提供了一个简单而强大的环境配置系统,它不仅能自动加载环境变量,还能在开发环境中智能定位项目根目录。

1. 核心特性

  • 自动加载:项目启动时自动搜索并加载根目录下的 .env 文件。
  • 多环境支持:支持 .env, .env.local, .env.dev 等多种后缀(加载顺序:.env 最先,后续文件覆盖前者)。
  • 智能根目录探测:利用 Nex.Env.root_path/0 自动处理开发环境(如 _build 目录)与源代码目录的路径差异。

2. 使用方法

你可以通过 Nex.Env.get/2 安全地获取配置。

示例

.env 中定义:

STRIPE_API_KEY=sk_test_12345
MAX_RETRY=5

在代码中读取:

# 获取字符串配置
api_key = Nex.Env.get("STRIPE_API_KEY")

# 提供默认值
retry_count = Nex.Env.get("MAX_RETRY", "3") |> String.to_integer()

3. 智能根目录探测

由于 Elixir 编译后的文件通常位于 _build 目录下,直接使用 File.cwd! 有时无法正确找到项目根目录。Nex 使用了递归探测算法:

  1. 从当前工作目录开始向上查找。
  2. 寻找包含 mix.exs.env 的文件夹。
  3. 确保开发者在任何位置启动项目(或运行测试)都能正确加载配置文件。

4. 最佳实践

  • 不要将 .env 提交到 Git:你应该在 .gitignore 中忽略 .env,并提供一个 .env.example 模板。
  • 类型转换:环境变量始终以字符串形式存储,读取后请根据需要使用 String.to_integer/1 等函数转换。
  • 生产环境:在 Docker 或云平台上,建议直接设置操作系统级环境变量,Nex 会优先读取它们。