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 for each task you want to run, reenabling as you go. Elixir 1.3 will make this easier by providing a rerun/2
function that does the reenable
and run
for a task. https://github.com/elixir-lang/elixir/pull/4394
的自定义混合任务
设置别名时:
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 for each task you want to run, reenabling as you go. Elixir 1.3 will make this easier by providing a rerun/2
function that does the reenable
and run
for a task. https://github.com/elixir-lang/elixir/pull/4394