You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否从dev.exs访问config.exs配置对象以实现单一数据源?

你的判断有误,完全可以实现!

别担心,你想要把config.exs作为唯一配置数据源,同时在dev.exs里引用其中的URL,是完全可行的。Elixir的配置加载机制本身就支持这种跨文件的配置引用,因为config.exs会先于dev.exs等环境配置文件加载,所以config.exs里的配置在dev.exs运行时已经是可用状态了。

举个具体的例子,假设你在config/config.exs里的配置是这样的:

config :data, Document, deployment: %{ 
  local_host: "somehost", 
  swarm_host: "otherhost"
}

那你在dev.exs里可以通过以下方式获取并使用swarm_host的值:

  • 直接提取单个值:
# 从全局配置中取出swarm_host
swarm_host = Application.get_env(:data, Document)[:deployment][:swarm_host]

# 接下来就可以在dev.exs里用这个值配置其他服务了
config :your_dev_service, api_url: swarm_host
  • 更安全的写法(避免键不存在导致的错误):
# 使用get_in和默认值,防止配置缺失时崩溃
swarm_host = get_in(Application.get_env(:data, Document, %{}), [:deployment, :swarm_host]) || "default-dev-host"

config :your_dev_service, api_url: swarm_host

简单来说,只要config.exs里的配置已经定义完成,后续加载的环境配置文件(dev.exs/test.exs/prod.exs)都能通过Application.get_env/2或get_in这类函数读取到这些配置值,完全不需要依赖Docker环境变量来中转。

内容的提问来源于stack exchange,提问作者Sebastialonso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:31:30