2009-02-23 14 views
68

जब भी मैं फ़ंक्शन का उपयोग करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है जो रेक रेक के भीतर होती है। क्या यह काम करने का कोई तरीका है?मैं रेक कार्य पर "होट" का उपयोग कैसे करूं?

त्रुटि कहते हैं, "ऐसी कोई फ़ाइल या निर्देशिका - (रेक कार्य नाम)"

+0

त्रुटि संदेश बहुत आत्म व्याख्यात्मक लगता है ... –

+5

ऐसा प्रतीत हो सकता है, लेकिन ऐसा नहीं है। नीचे मेरा जवाब देखें। कर्नेल # हो जाता है और STDIN.gets के बीच के अंतर के बारे में काफी भ्रम है। –

उत्तर

138

समस्या यह है कि Kernel#gets (यदि आप केवल gets का उपयोग करते हैं तो आप जो कॉल कर रहे हैं) मान लीजिए कि आप रेक में दिए गए तर्कों द्वारा नामित फ़ाइल से खींच रहे हैं। इसका मतलब है कि gets [रेक-टास्क-यहां] नामक फ़ाइल की सामग्री को वापस करने का प्रयास करता है, जो लगभग निश्चित रूप से मौजूद नहीं है।

STDIN.gets आज़माएं।

+1

यही वह है! पूरी तरह से – debbie

-4

मुझे नहीं लगता कि यह है कि आप एक रेक कार्य में हो जाता है का उपयोग कर, यदि आप आदेश से इनपुट प्राप्त करने की आवश्यकता होना चाहिए लाइन आपको शायद इसे पैरामीटर के रूप में पास करनी चाहिए, लेकिन यदि आप कुछ कोड पोस्ट करते हैं जो काम नहीं कर रहा है तो मुझे यकीन है कि आपको एक बेहतर जवाब मिलेगा।

+19

सामान्य रूप से, कमांड लाइन तर्क _are_ एक बेहतर विकल्प है, लेकिन रेक रेक के भीतर उपयोग करने के लिए बहुत अच्छे कारण हैं। उनमें से ज्यादातर को प्रमाणीकरण या सत्यापन के साथ करना है कि आप वास्तव में ऐसा करना चाहते हैं जो आप करते हैं। ("उत्पादन कोड तैनात करें") –

संबंधित मुद्दे