在多个项目中加载elixir configs hierarchal

lei*_*ifg 3 config loading elixir

我正在Elixir写一个小项目,我将使用内置的配置功能.它看起来像我有一个将调用API的一般项目:

API/confix.exs:

use Mix.Config

config :api, :status, "awesome"
Run Code Online (Sandbox Code Playgroud)

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

api_consumer/mix.exs

def application do
  [applications: [:logger, :api]]
end
Run Code Online (Sandbox Code Playgroud)

当我在api_consumer中运行一个控制台时,访问该变量会产生一个nil结果.

iex -S mix

iex(1)> Application.get_env(:api, :status)
=> nil
Run Code Online (Sandbox Code Playgroud)

根据我的理解(以及我在此阅读的内容)应该有效.

有谁知道这里发生了什么?

Pat*_*ity 5

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

# api/mix.exs

def application do
  [
    applications: [:logger, :api],
    env: [status: "awesome"]
  ]
end
Run Code Online (Sandbox Code Playgroud)

然后,您可以:api_consumerconfig.exs文件中的应用程序中覆盖此设置:

# api_consumer/config/config.exs

config :api, status: "fantastic"
Run Code Online (Sandbox Code Playgroud)

更多信息可以在这里找到.