invoke
एक लूप more than once के भीतर से एक ही रेक कार्य संभव नहीं है। लेकिन, मैं 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
में आर्ग की संरचना की जांच है, लेकिन यह, लगता है अच्छी तरह से, hackish। क्या मैं ऐसा करने के लिए एक और (बेहतर?) तरीका है जो मैं करना चाहता हूं?
वह चिकना दिखता है। धन्यवाद! –