在Rake中,可以指定任务之间的依赖关系。然后,引擎构建一个依赖关系树,并按照依赖关系的顺序执行这些任务,并且每个任务只执行一次。
在灵丹妙药/混合药中是否有类似的机制?
task seed_users: [:seed_companies] do
# actions
end
task :seed_companies do
# actions
end发布于 2016-03-28 08:26:27
我不认为这方面有任何内置的功能,但您可以使用Mix.Task.run/2来实现这一点:
defmodule Mix.Tasks.SeedUsers do
def run(_args) do
IO.puts "started seed_users"
Mix.Task.run "seed_companies"
Mix.Task.run "seed_companies"
IO.puts "completed seed_users"
end
end
defmodule Mix.Tasks.SeedCompanies do
def run(_args) do
IO.puts "started seed_companies"
IO.puts "completed seed_companies"
end
end示例运行:
$ mix seed_users
started seed_users
started seed_companies
completed seed_companies
completed seed_users注意,如果任务已经运行过一次,Mix.Task.run/2就不会运行该任务,因此,如果您调用Mix.Task.run/2两次,如上面的示例所示,它只能运行一次。如果您想要运行一个任务不止一次,您需要在每次运行之后调用Mix.Task.reenable/1。
https://stackoverflow.com/questions/36256472
复制相似问题