【问题标题】:Rake invoke breaks my each cycle耙子调用打破了我的每个周期
【发布时间】:2015-07-29 13:50:19
【问题描述】:

我正在尝试使用 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 打破每个循环?我不知道……有什么建议吗?

【问题讨论】:

    标签: rake rake-task rakefile


    【解决方案1】:

    好的,我继续搜索,发现我错过了一段代码。要多次运行同一个任务,我需要这样做:

    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
    

    【讨论】:

      猜你喜欢
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2018-12-02
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多