invoke
ループ内から同じタスクを2 回以上レーキすることはできません。rake first
しかし、配列を呼び出してループし、second
反復ごとに異なる引数で呼び出すことができるようにしたいと考えています。invoke
初回のみ実行されるので、 を使ってみたexecute
のですが、Rake::Task#executeは splat (*) 演算子を使わず、引数を 1 つしか取りません。
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
1 つのハックは、引数をexecute
配列に入れ、引数second
の構造を調べることですが、それはハックのようです。私がやりたいことを達成するための別の(より良い?)方法はありますか?