Невозможно invoke
выполнить одну и ту же задачу рейка из цикла более одного раза. Но я хочу, чтобы иметь возможность вызывать rake first
и цитировать через массив и вызывать second
на каждой итерации с разными аргументами. Поскольку invoke
запускается только в первый раз, я пытался использовать execute
, но Rake:: Task # execute не используйте оператор splat (*) и принимайте только один аргумент.
desc "first task"
task :first do
other_arg = "bar"
[1,2,3,4].each_with_index do |n,i|
if i == 0
Rake::Task["foo:second"].invoke(n,other_arg)
else
# this doesn't work
Rake::Task["foo:second"].execute(n,other_arg)
end
end
end
task :second, [:first_arg, :second_arg] => :prerequisite_task do |t,args|
puts args[:first_arg]
puts args[:second_arg]
# ...
end
Один взломать его - поместить аргументы в execute
в массив и в second
проверить структуру args, но это кажется, ну, хаки. Есть ли другой (лучший?) Способ выполнить то, что я хотел бы сделать?