【问题标题】:Rake multitask with a variable task list使用可变任务列表耙多任务
【发布时间】:2011-08-09 05:32:04
【问题描述】:

我读过一些关于使用 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 变量还是首选其他方法?

【问题讨论】:

    标签: ruby rake parallel-processing


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复,我将如何修改依赖关系图,以便我可以利用可变多任务而不是预先配置的多任务。我正在寻找一种允许动态多任务处理的方法。
    • 如果您不介意在任何任务之前执行您的逻辑,您可以简单地在任何任务之外的 rake 文件中添加内联代码
    【解决方案2】:

    感谢之前的回复,这让我找到了解决方案:

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

    # 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
    

    【讨论】:

      猜你喜欢
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多