为Elixir程序包设置默认的应用程序配置
问题描述:
我正在编写一个Elixir程序包,我想指定一个默认的应用程序配置(用户可以通过在其config.exs
中指定自定义值来覆盖)。我最初把它们放在我的项目的config.exs
中,直到我意识到配置文件不会加载依赖于这个库的项目。为Elixir程序包设置默认的应用程序配置
配置文件本身告诉你:
此配置任何依赖之前加载,并且限制 这个项目。如果另一个项目依赖于此项目,则此 文件将不会被加载,也不会影响父项目。因此, 如果您想为第三方用户的 第三方用户的应用程序提供默认值,则应该在您的“mix.exs”文件中完成。
我一直在努力理解如何在我的mix.exs
指定应用程序默认设置并使用它们。我目前的解决方案是使用Application.get_env/3
的默认参数,但这对我来说看起来不太合适,因为应用程序的默认设置将分散在整个代码中。
Application.get_env(:my_library, :arg, "default value")
所以,我怎样才能在mix.exs
指定应用程序的默认值?
答
您可以在mix.exs
中为您的应用程序设置默认配置值 - 当在另一个项目中用作依赖项时,这些值也可用。例如:
def applications do
[applications: [:logger, ...],
mod: {MyLibrary.Application, []},
env: [arg: "default value"]]
end
绕另一条路:一个确实['Application.put_env/4'](https://hexdocs.pm/elixir/Application.html#put_env/4),后来在主应用程序会读取和/或覆盖这些。 – mudasobwa