Rake调用打破了我的每个循环

时间:2015-07-29 13:50:19

标签: rake rake-task rakefile

我正在尝试使用rake任务进行迭代,但是当我使用此示例时,输出显示我始终是列表中的第一项。我想重用任务:create。这是我的代码:

namespace :devops do
    desc "Task description"
    task :prepend do
        %W[config logs].each do | folder |
            task("devops:create").invoke("#{folder}")
        end    
    end

    desc "Create the folder structure"
    task :create, [ :name ] do |t, args| 
        puts "Creating the structure for <#{args[:name]}> folder"
    end
end

这是rake执行:

rake devops:prepend

这是输出:

Creating the structure for <config> folder

它总是需要第一个参数,为什么?这就像任务invoke打破了每个周期?我不知道......有什么提示吗?

1 个答案:

答案 0 :(得分:0)

好的,我一直在寻找,我发现我错过了代码的安宁。要多次运行相同的任务,我需要这样做:

task("devops:create").reenable

所以完整的例子将是:

namespace :devops do
    desc "Task description"
    task :prepend do
        %W[config logs].each do | folder |
            task("devops:create").invoke("#{folder}")
            task("devops:create").reenable
        end    
    end

    desc "Create the folder structure"
    task :create, [ :name ] do |t, args| 
        puts "Creating the structure for <#{args[:name]}> folder"
    end
end

结果是:

Creating the structure for <config> folder
Creating the structure for <logs> folder