gpt4 book ai didi

Elixir Mix 任务中类似 Rake 的依赖功能?

转载 作者:行者123 更新时间:2023-12-04 02:54:16 27 4
gpt4 key购买 nike

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

elixir/mix 中是否有类似的机制?

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每次运行后。

关于Elixir Mix 任务中类似 Rake 的依赖功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36256472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com