繁体   English   中英

Elixir:混合别名,一个别名中包含两个“运行”任务

[英]Elixir: Mix aliases, two `run` tasks in one alias

设置别名时:

defp aliases do
    [
      test_run: ["run -e 'IO.puts(\"One\")'", "run -e 'IO.puts(\"Two\")'"]
    ]
end

mix test_run的结果应为

$ mix test_run
One
Two

但是它只执行第一个任务并打印

$ mix test_run
One

不知道这是否是预期的行为,但是在发布问题之前,我想确定一下。 这是重现错误的存储库: https : //github.com/wende/mix_run_twice

Mix不允许任务运行两次。 但是,您可以使用Mix.Task.reenable / 1再次运行它。

  test_run: ["run -e 'IO.puts(\"One\"); Mix.Task.reenable(:run)'", "run -e 'IO.puts(\"Two\")'"]

您必须在第一次run结束时重新启用该任务,否则它将永远无法进入第二个任务。 您不能执行以下操作:

 ["run -e 'IO.puts(\"One\")'", "run -e 'Mix.Task.reenable(:run)'"]

我建议您创建一个自定义的混合任务,为您要运行的每个任务调用Mix.Task.run/2 ,并在运行时重新启用。 Elixir 1.3通过提供执行rerun/2 reenable并为任务runrerun/2函数,将使此操作变得更加容易。 https://github.com/elixir-lang/elixir/pull/4394

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM