我正在用 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/