Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 具有可变任务列表的Rake多任务_Ruby_Rake_Parallel Processing - Fatal编程技术网

Ruby 具有可变任务列表的Rake多任务

Ruby 具有可变任务列表的Rake多任务,ruby,rake,parallel-processing,Ruby,Rake,Parallel Processing,我读过一些关于使用rake参数和rake多任务的文章。下面是一些简单的例子 multitask 'build_parallel' => ['build_a', 'build_z'] 或 我的问题: 在一个任务中构建一个全局变量,然后在多任务中使用的最佳方法是什么?下面的命令不执行task1、task2、task3…这意味着全局$build\u列表为空 $build_list = [] task :build do $build_list << 'task1' $

我读过一些关于使用rake参数和rake多任务的文章。下面是一些简单的例子

multitask 'build_parallel' => ['build_a', 'build_z']

我的问题:

在一个任务中构建一个全局变量,然后在多任务中使用的最佳方法是什么?下面的命令不执行task1、task2、task3…这意味着全局$build\u列表为空

$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
$build\u list=[]
任务:构建do

$build_list问题不在于您选择的变量类型,而在于您在任务执行过程中填充变量,而依赖关系图是在任何任务执行之前创建的。

多亏了前面的响应,我找到了解决方案:

在运行依赖项列表中的任何任务之前,在任务外部的方法中计算动态变量

# 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
#在方法而不是任务中生成列表
def get_列表
构建列表=[]

构建列表感谢您的响应,我如何修改依赖关系图,以便使用可变多任务而不是预先配置的多任务。我正在寻找一种允许动态多任务处理的方法。如果您不介意在任何任务之前执行您的逻辑,那么您可以在任何任务之外的rake文件中使用内联代码
# 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