如何处理elixir雨伞应用程序中的多个应用程序配置文件
问题描述:
我有一个elixir雨伞应用程序(A),其中有多个应用程序。其中一个(B)被定义为独立的存储库,并且包含它自己的配置文件(config/config.exs
),大多数都是默认值。如何处理elixir雨伞应用程序中的多个应用程序配置文件
将应用程序B添加到A并启动伞应用程序时,未加载应用程序B的配置。它看起来像我需要明确地包括B的所有配置参数在配置。
我期望应用程序B的配置在应用程序A中仍然可用,我只需要重写一些特定的值。
任何人都可以向我解释如何在主应用程序(A)配置文件中再次指定所有配置参数的情况下实现它吗?
答
使用mix new --umbrella
生成的雨伞应用程序应自动包含所有应用程序的配置。
在your_project/apps/app_a/mix.exs
应该配置为从伞根读取配置:
build_path: "../../_build",
config_path: "../../config/config.exs",
deps_path: "../../deps",
lockfile: "../../mix.lock",
而在your_project/config/config.exs
,它应该包括所有的应用程序配置:
use Mix.Config
# By default, the umbrella project as well as each child
# application will require this configuration file, ensuring
# they all use the same configuration. While one could
# configure all applications here, we prefer to delegate
# back to each application for organization purposes.
import_config "../apps/*/config/config.exs"
感谢。对于包含在应用程序中的应用程序如何工作,而不是在'apps'目录中内联? – mkorszun
对不起,要在另一个包中设置默认值,请将值放在'mix.exs'中,请参阅https://stackoverflow.com/a/43304305/1650580 –