2017-04-09 157 views
2

我正在编写一个Elixir程序包,我想指定一个默认的应用程序配置(用户可以通过在其config.exs中指定自定义值来覆盖)。我最初把它们放在我的项目的config.exs中,直到我意识到配置文件不会加载依赖于这个库的项目。为Elixir程序包设置默认的应用程序配置

配置文件本身告诉你:

此配置任何依赖之前加载,并且限制 这个项目。如果另一个项目依赖于此项目,则此 文件将不会被加载,也不会影响父项目。因此, 如果您想为第三方用户的 第三方用户的应用程序提供默认值,则应该在您的“mix.exs”文件中完成。


我一直在努力理解如何在我的mix.exs指定应用程序默认设置并使用它们。我目前的解决方案是使用Application.get_env/3的默认参数,但这对我来说看起来不太合适,因为应用程序的默认设置将分散在整个代码中。

Application.get_env(:my_library, :arg, "default value") 

所以,我怎样才能在mix.exs指定应用程序的默认值?

+0

绕另一条路:一个确实['Application.put_env/4'](https://hexdocs.pm/elixir/Application.html#put_env/4),后来在主应用程序会读取和/或覆盖这些。 – mudasobwa

回答

6

您可以在mix.exs中为您的应用程序设置默认配置值 - 当在另一个项目中用作依赖项时,这些值也可用。例如:

def applications do 
    [applications: [:logger, ...], 
    mod: {MyLibrary.Application, []}, 
    env: [arg: "default value"]] 
end 
相关问题