2015-07-29 2 views
0

Я пытаюсь выполнить итерацию с помощью задач rake, но когда я использую этот пример, вывод всегда показывает мне первый элемент внутри моего списка. Я хочу повторно использовать задачу :create. Вот мой код:Rake invoke разрывает мой каждый цикл

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 devops:prepend 

Здесь выход:

Creating the structure for <config> folder 

Она всегда принимает первый аргумент, почему? Это что-то вроде задачи invoke разбивает каждый цикл? Я не знаю ... какие-нибудь советы?

ответ

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 
Смежные вопросы