为Elixir包设置默认应用程序配置

时间:2017-04-09 03:41:50

标签: elixir

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

配置文件本身告诉您:

  

此配置在任何依赖项之前加载并受到限制   到这个项目。如果另一个项目依赖于这个项目,那么这个   文件未加载也不会影响父项目。为此原因,   如果您想为您的应用程序提供默认值   第三方用户,应该在你的" mix.exs"文件。

我一直在努力了解如何在mix.exs中指定应用程序默认值并使用它们。我目前的解决方案是使用Application.get_env/3和默认参数,但这对我来说似乎不对,因为应用程序默认值会分散在代码中。

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

那么,如何在mix.exs中指定应用程序默认值?

1 个答案:

答案 0 :(得分:7)

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

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