繁体   English   中英

像Elixir Mix任务中的依赖项功能一样耙吗?

[英]Rake like dependency functionality in Elixir Mix tasks?

在Rake中,可以指定任务之间的依赖关系。 然后,引擎将构建一个依赖关系树,并按照依赖关系的顺序执行这些任务,并且每个任务仅执行一次。

e剂/混合物中是否有类似的机制?

task seed_users: [:seed_companies] do 
  # actions
end

task :seed_companies do
  # actions
end

我认为没有任何内置功能,但是您可以使用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

暂无
暂无

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

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