gpt4 book ai didi

ruby - 任务依赖性是否总是以特定顺序与 rake 一起运行?

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:10 25 4
gpt4 key购买 nike

我有以下示例,它基于我希望我的 rakefile 使用的结构:

task :default do
puts 'Tasks you can run: dev, stage, prod'
end

task :dev => [:init,:devrun,:clean]
task :devrun do
puts 'Dev stuff'
end

task :stage => [:init,:stagerun,:clean]
task :stagerun do
puts 'Staging stuff'
end

task :prod => [:init,:prodrun,:clean]
task :prodrun do
puts 'Production stuff'
end

task :init do
puts 'Init...'
end

task :clean do
puts 'Cleanup'
end

任务是否总是以相同的顺序运行?我在某处读到他们不会,在其他地方读到他们会,所以我不确定。

或者,如果您可以建议一种更好的方法来完成我想要实现的目标(例如,围绕依赖环境的步骤设置一个通用的初始化和清理步骤),那也很好。

谢谢

最佳答案

来自 Rake 源代码:

# Invoke all the prerequisites of a task.
def invoke_prerequisites(task_args, invocation_chain) # :nodoc:
@prerequisites.each { |n|
prereq = application[n, @scope]
prereq_args = task_args.new_scope(prereq.arg_names)
prereq.invoke_with_call_chain(prereq_args, invocation_chain)
}
end

因此看起来代码通常只是迭代数组并按顺序运行先决条件任务。

但是:

# Declare a task that performs its prerequisites in parallel. Multitasks does
# *not* guarantee that its prerequisites will execute in any given order
# (which is obvious when you think about it)
#
# Example:
# multitask :deploy => [:deploy_gem, :deploy_rdoc]
#
def multitask(args, &block)
Rake::MultiTask.define_task(args, &block)
end

所以你是对的,两者都可能是真的,但只有在你的任务前面加上 multitask 才能关闭顺序看起来常规任务按顺序运行。

关于ruby - 任务依赖性是否总是以特定顺序与 rake 一起运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332381/

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