首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在混合任务中使用类似于依赖功能的Rake?

问在混合任务中使用类似于依赖功能的Rake?
EN

Stack Overflow用户
提问于 2016-03-28 05:23:05
回答 1查看 443关注 0票数 2

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

在灵丹妙药/混合药中是否有类似的机制?

代码语言:javascript
复制
task seed_users: [:seed_companies] do 
  # actions
end

task :seed_companies do
  # actions
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-28 08:26:27

我不认为这方面有任何内置的功能,但您可以使用Mix.Task.run/2来实现这一点:

代码语言:javascript
复制
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

示例运行:

代码语言:javascript
复制
$ 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。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36256472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档