我正在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)应该有用。
有人知道这里发生了什么吗?
答案 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。