我已经阅读了一些关于使用rake参数和rake多任务的posts,tips和tutorials。以下是一些简单的例子。
multitask 'build_parallel' => ['build_a', 'build_z']
或
multitask :mytask => [:task1, :task2, :task3] do
puts "Completed parallel execution of tasks 1 through 3."
end
我的问题:
在一个任务中构建全局变量的最佳方法是什么,然后我可以在多任务中使用它?以下内容不执行task1,task2,task3 ...这意味着全局$ build_list为空
$build_list = []
task :build do
$build_list << 'task1'
$build_list << 'task2'
$build_list << 'task3'
Rake::MultiTask[:build_parallel].invoke # or Rake::Task[:build_parallel].invoke
end
multitask :build_parallel => $build_list
我应该在这里使用ENV变量还是首选其他方法?
答案 0 :(得分:1)
问题不在于您选择的变量类型,而是在执行任务期间填充变量,而在执行任务之前创建依赖图。
答案 1 :(得分:1)
感谢之前的回复,它引导我找到解决方案:
在运行依赖关系列表中的任何任务之前,计算任务外部方法中的动态变量。
# Generate the list in a method instead of a task
def get_list
build_list = []
build_list << 'task1'
build_list << 'task2'
build_list << 'task3'
end
# Make sure the list has been generated before the multitask call
@build_list = get_list
# Then define the multitask list dependency
multitask :build_parallel => @build_list