使用可变任务列表进行多任务处理

时间:2011-08-09 05:32:05

标签: ruby rake parallel-processing

我已经阅读了一些关于使用rake参数和rake多任务的poststipstutorials。以下是一些简单的例子。

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变量还是首选其他方法?

2 个答案:

答案 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