Rake 调用打破了我的每个循环
Rake invoke breaks my each cycle
我正在尝试使用 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 devops:prepend
这是输出:
Creating the structure for <config> folder
它总是取第一个参数,为什么?是不是任务 invoke
打破了每个循环?我不知道...有什么提示吗?
好的,我继续搜索,我发现我错过了一段代码。为了 运行 多次相同的任务,我需要这样做:
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
我正在尝试使用 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 devops:prepend
这是输出:
Creating the structure for <config> folder
它总是取第一个参数,为什么?是不是任务 invoke
打破了每个循环?我不知道...有什么提示吗?
好的,我继续搜索,我发现我错过了一段代码。为了 运行 多次相同的任务,我需要这样做:
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