मैं रेक कार्य पर "हो जाता है" का उपयोग कैसे करूं?


80

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

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


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

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

जवाबों:


158

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

कोशिश करो STDIN.gets


3
छोटी नाइट उठा: $stdinशायद STDINयहाँ पर बेहतर है, यह भी देखें stackoverflow.com/a/4279689/968531
नॉडोडिस नाइटमेयर

-4

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


21
सामान्य तौर पर, आदेश पंक्ति तर्क हैं एक बेहतर विकल्प है, लेकिन उपयोग करने के लिए अच्छे कारणों के बहुत सारे एक रेक कार्य के भीतर हो जाता है देखते हैं। उनमें से अधिकांश को प्रमाणीकरण या सत्यापन के साथ करना पड़ता है जो आप वास्तव में वही करना चाहते हैं जो आप करने के लिए बताते हैं। ("प्रोडक्शन कोड तैनात करें")
जेम्स ए। रोसेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.