我在config/config.exs
中有一个用户提供的配置对象。事实证明我需要用户提供的URL到dev.exs
文件中。
从技术上讲,这个值可能是一个环境Docker变量,但我试图让config.exs
成为事实的唯一来源。
我不能这样做。
我在想没有办法做到这一点。我错了吗?
我在config/config.exs
config :data, Document,
deployment: %{
local_host: "somehost",
swarm_host: "otherhost
}
我将使用deployment
语句访问在主配置定义之后加载的另一个配置文件中的import_config
映射的值。文件dev.exs
在 config.exs
后加载。
现在在dev.exs
,我需要访问deployment
地图的主机,但遗憾的是Application.get_env(:data, Document)
是nil(这很可能意味着尚未完成所有配置变量的加载) )
意思是我无法访问其他配置文件中定义的任何配置变量。我很确定没有解决方法,但也许除了我之外还有一个聪明的解决方案。
我认为很明显我在网上研究过这个问题,在Phoenix文档中搜索配置文件并发现没什么用处,这就是为什么我在SO中,但显然对某些人来说并不那么明显。
答案 0 :(得分:1)
如果您想从另一个配置文件中读取变量,可以在import_config
中使用dev.exs
:
use Mix.Config
import_config "config.exs"
在import_config
行之上定义的任何内容都将被覆盖,并且在其下面定义的任何内容都将覆盖来自导入文件的任何内容。
请注意config.exs
文件中的所有内容将被导入,因此您可能希望创建config_user.exs
并从其他所有配置文件中导入该文件,以防您只是希望共享某个变量。