2011-02-23 31 views
21

पर्यावरण चर का उपयोग किए बिना एक रेक कार्य में नामित तर्क पारित करने का कोई तरीका है?मैं रेक कार्य में नामित तर्क कैसे पारित कर सकता हूं?

मुझे पता है कि रैक कार्यों दो प्रारूपों में तर्क स्वीकार कर सकते हैं हूँ:

पर्यावरण चर

$ rake my_task foo=bar 

यह नाम foo और मूल्य bar कि में पहुँचा जा सकता है के साथ एक वातावरण चर बनाता है my_taskENV['foo'] द्वारा रेक कार्य my_task

रैक टास्क तर्क

$ rake my_task['foo','bar'] 

यह मान गुजरता foo और bar पहले दो कार्य तर्कों को (अगर वे परिभाषित कर रहे हैं)। यदि my_task रूप में परिभाषित किया गया:

task :my_task, :argument_1, :argument_2 

तो argument_1 मूल्य foo होगा और argument_2 मूल्य bar होगा।

उत्तर

23

आप इस तरह बातें कह सकते हैं:

rake some_task -- --arg=value 

और फिर, अपने कार्य के अंदर, ARGV

[ 'some_task', '--arg=value' ] 

ताकि आप OptionParser (या कुछ अन्य विकल्प पार्सर) इस्तेमाल कर सकते हैं ARGV अनपैक करने के लिए किया जाएगा किसी भी पुरानी सीएलआई लिपि की तरह; रेक स्विच के रूप में --arg=like को पार्स करने की कोशिश करने से रेक को रखने के लिए अजीब लग रही -- आवश्यक है।

आप मानक पर्यावरण परिवर्तनीय दृष्टिकोण के साथ शायद बेहतर हैं, यह -- सामान के रूप में बदसूरत नहीं है और यह रेक कार्यों के लिए तर्क पारित करने का सामान्य तरीका है।