【问题标题】:Configure applications to be loaded only in test environment将应用程序配置为仅在测试环境中加载
【发布时间】:2017-08-07 18:51:29
【问题描述】:

如何将应用程序配置为仅在特定环境中在运行时加载? 我知道我只能为测试环境配置依赖项。
有没有办法将mix.exs 中的应用程序配置为仅在测试环境中加载?
例如:

  def application do
    [mod: {MyApp, []},
     applications: [:phoenix]]   end

  defp deps do
    [{:phoenix, "~> 1.2.1"}] end

我可以只为测试环境配置 phoenix 应用程序吗?

【问题讨论】:

  • 使用长生不老药 1.4。它有application inference。它只会根据依赖项加载应用程序。话虽如此,您的混合文件只是灵丹妙药代码。随意在那里扔一个 if ,或者编写你自己的方法或其他东西。您可以使用Mix.env/1 了解您所在的环境。

标签: elixir elixir-mix


【解决方案1】:

正如 @JustinWood 在 cmets 中所说,如果您使用的是 elixir 1.4,您可以使用 application inference 自动为您执行此操作。

如果您必须使用 1.4 之前的 elixir 版本,方法是在您的 mix.exs 中添加类似于以下内容的内容:

def application do
  [
    mod: {MyApp, []},
    applications: applications(Mix.env)
  ]
end

defp applications(:test), do: applications(:default) ++ [:test_only_app_1, :test_only_app_2]
defp applications(_),     do: [:logger, :httpoison]

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2016-09-24
    • 2017-12-10
    • 2018-06-05
    相关资源
    最近更新 更多