是否可以从dev.exs中的config.exs访问配置对象?

时间:2018-03-27 19:41:38

标签: elixir phoenix-framework

上下文

我在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.exsconfig.exs后加载

现在在dev.exs,我需要访问deployment地图的主机,但遗憾的是Application.get_env(:data, Document)是nil(这很可能意味着尚未完成所有配置变量的加载) ) 意思是我无法访问其他配置文件中定义的任何配置变量。我很确定没有解决方法,但也许除了我之外还有一个聪明的解决方案。

我认为很明显我在网上研究过这个问题,在Phoenix文档中搜索配置文件并发现没什么用处,这就是为什么我在SO中,但显然对某些人来说并不那么明显。

1 个答案:

答案 0 :(得分:1)

如果您想从另一个配置文件中读取变量,可以在import_config中使用dev.exs

use Mix.Config

import_config "config.exs"

import_config行之上定义的任何内容都将被覆盖,并且在其下面定义的任何内容都将覆盖来自导入文件的任何内容。

请注意config.exs文件中的所有内容将被导入,因此您可能希望创建config_user.exs并从其他所有配置文件中导入该文件,以防您只是希望共享某个变量。