不可能invoke
在循环内多次执行相同的rake任务.但是,我希望能够调用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
Run Code Online (Sandbox Code Playgroud)
围绕它的一个方法就是将参数execute
放入一个数组中并second
检查args的结构,但这看起来好像是hackish.还有另一种(更好的?)方式来完成我想做的事情吗?
小智 21
您可以使用Rake :: Task#reenable来再次调用它.
desc "first task"
task :first do
other_arg = "bar"
[1,2,3,4].each_with_index do |n,i|
if i == 0
Rake::Task["second"].invoke(n,other_arg)
else
# this does work
Rake::Task["second"].reenable
Rake::Task["second"].invoke(n,other_arg)
end
end
end
task :second, [:first_arg, :second_arg] do |t,args|
puts args[:first_arg]
puts args[:second_arg]
# ...
end
Run Code Online (Sandbox Code Playgroud)
$ rake first
1
bar
2
bar
3
bar
4
bar
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8093 次 |
最近记录: |