我正在用 Elixir 编写一个小项目,我将在其中使用内置的配置功能。看起来我有一个将调用 API 的通用项目的方式:

api/confix.exs:

use Mix.Config

config :api, :status, "awesome"

我现在有第二个项目应该利用这些变量

api_consumer/mix.exs
def application do
  [applications: [:logger, :api]]
end

当我在 api_consumer 中运行控制台时,访问变量会产生一个 nil 结果。
iex -S mix

iex(1)> Application.get_env(:api, :status)
=> nil

从我的理解(以及我读到的 here )应该可以。

有人知道这里发生了什么吗?

最佳答案

mix.exs 用于配置当前应用程序,而 config.exs 用于配置其他应用程序。在您的 :api 应用程序中,您应该将默认值放在 application/0 内的 mix.exs 函数中:

# api/mix.exs

def application do
  [
    applications: [:logger, :api],
    env: [status: "awesome"]
  ]
end

然后,您可以在 :api_consumer 文件内的 config.exs 应用程序中覆盖此设置:
# api_consumer/config/config.exs

config :api, status: "fantastic"

可以找到更多信息 here

关于config - 在多个项目中加载 elixir 配置层次结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33406543/

10-12 05:07