在多个项目中加载elixir configs hierarchal

时间:2015-10-29 05:27:21

标签: config loading elixir

我正在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)应该有用。

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

1 个答案:

答案 0 :(得分:5)

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