रूबी: इंटरेक्टिव रूबी कंसोल (IRB) में फाइल लोड कैसे करें?


84

मैं रूबी के साथ प्रोग्राम करने के लिए सीखने के लिए आईआरबी (इंटरेक्टिव रूबी कंसोल) का उपयोग कर रहा हूं। यदि मैं किसी पाठ संपादक में अपने कार्यक्रम पहले लिखता हूं, तो मैं कंसोल में फ़ाइल कैसे लोड करूं?


क्या [यह] [१] आप क्या हासिल करना चाहते हैं? [1]: stackoverflow.com/a/2652558/919641
pjam

1
source ("filename.rb")
असद अब्राहिम

जवाबों:


85

यदि आपको केवल एक फाइल को आईआरबी में लोड करने की आवश्यकता है, तो आप irb -r ./your_file.rbइसे उसी निर्देशिका में भेज सकते हैं ।

इसके लिए स्वचालित रूप से फ़ाइल की आवश्यकता होती है और आपको तुरंत इसके साथ काम करने की अनुमति देता है।


2
यदि आप प्रत्येक फ़ाइल के बीच सिर्फ -r से अधिक जोड़ना चाहते हैं, तो ठीक है कि मैं क्या करता हूं और यह काम करता है। यह है कि मैं अपनी सभी फ़ाइलों को irb में लोड करता हूं ताकि मैं अपने सभी ऐप के सामान को irb के भीतर एक्सेस कर सकूं, बेशक मैं बूट फ़ाइल को irb में लोड करने के लिए एक रेक स्क्रिप्ट का उपयोग करता हूं, इसलिए मैं बस कर सकता हूं rake irbऔर यह मेरे लिए यह सब करता है।
थर्मैटिक्स 16

यह आदमी को पढ़ने के बाद मेरा पहला प्रयास था, लेकिन मैं -r some_file.rb का उपयोग करता हूं, 30 मिनट बाद मुझे यह मिला और जोड़ें ।/, धन्यवाद xd
एलेक्सिस

उबंटू 16.04 में, मैं डॉट निकालता हूं:irb -r /foo/foo.rb
noobninja

यह फ़ाइल से वेरिएबल्स तक पहुंच नहीं देता है।
रेडॉन रोसबोरो

47

Ubuntu 14.04 पर रूबी 1.9.3 का उपयोग करते हुए, मैं वर्तमान irbकमांड से निम्न कमांड लाइन के साथ फाइल लोड करने में सक्षम हूं :

irb -I . -r foo.rb

foo.rbवह फाइल कहां है जिसे मैं अपनी वर्तमान निर्देशिका से लोड करना चाहता हूं। -Iविकल्प वर्तमान निर्देशिका (जोड़ने के लिए आवश्यक है .के रूप में गहरे लाल रंग का आदमी पेज में विस्तार से बताया, माणिक लोड पथ के लिए)। यह requireवर्तमान निर्देशिका से फ़ाइलों को संभव बनाता है , जो कि -rविकल्प को irbपूरा करता है।

जब मेरे पास यह समस्या थी तो वह महत्वपूर्ण टुकड़ा मेरे लिए स्पष्ट नहीं था -I। एक बार जब आप ऐसा करते हैं, आप कॉल कर सकते हैं require 'foo.rb'के भीतर से irbवर्तमान निर्देशिका में किसी भी फाइल के लिए। और निश्चित रूप से, आप किसी भी निर्देशिका को निर्दिष्ट कर सकते हैं, न कि केवल विकल्प के .साथ -I। लोड पथ पर कई निर्देशिकाओं को शामिल करने के लिए, उन्हें एक बृहदान्त्र (:), जैसे अलग करें:

irb -I foo/:bar/:baz/

यह आदेश निर्देशिका जोड़ना होगा foo, barऔर bazगहरे लाल रंग का लोड पथ के लिए।

अंतिम विकल्प फ़ाइल का उपयोग करते समय requireया -rलोड करने के लिए फ़ाइल के सापेक्ष या निरपेक्ष पथ का उपयोग करना है:

irb -r ./foo.rb

या भीतर से irb:

> require './foo.rb'

आपके समाधान का परिणाम 'रूबी foo.rb' को कॉल करने के समान है, लेकिन कम से कम आप देखते हैं कि क्या चल रहा है। लेकिन मैं कंसोल को खुला छोड़ना चाहता हूं, इसलिए मैं कुछ और कमांड निष्पादित कर सकता हूं। कोई उपाय?
पॉल वर्चूर

32

में टाइप करें irb

और तब

require './ruby_file.rb'

यह मानकर चल रहा है कि ruby_file.rb उसी निर्देशिका में है। तदनुसार समायोजित करें।


4
आप भी इस्तेमाल कर सकते हैं require_relative। जैसे require "./lib/foo"कि वैसा ही हैrequire_relative "lib/foo"
डेनिस

.rbवैकल्पिक है, आप require './ruby_file'. I checked in माणिक 1.9.3p551`
AMIC MING

./ क्या करता है?
12

1
@ the12 यह वर्तमान निर्देशिका का एक सापेक्ष मार्ग है
winklerrr

28

दो तरीके:

  1. कार्यक्रम को चलाने के बिना स्रोत को लोड करने के लिए - यह सभी चर और कार्यों तक पहुंच देता है:

source("filename.rb")

  1. प्रोग्राम चलाने के लिए और फिर इंटरेक्टिव मोड में जाने के लिए - यह केवल फ़ंक्शंस तक पहुंच देता है, न कि चर:

require("filename.rb")


1
यह प्रश्न का उत्तर देने के लिए प्रकट होता है, साथ ही एक स्क्रिप्ट को कैसे फिर से लोड करना है। मैं उपयोग कर रहा था, requireजो स्क्रिप्ट को फिर से लोड करने के लिए प्रकट नहीं होता है (मूल स्रोत में कोई भी संशोधन आपके सत्र में परिलक्षित नहीं होता है), जबकि sourceमूल स्क्रिप्ट में परिवर्तन को प्रतिबिंबित करने के लिए प्रकट होता है।
माइकल

4

यह आपके माणिक्य पर निर्भर करता है। रूबी 1.8 में आपका वर्तमान पथ शामिल है, जबकि रूबी 1.9 नहीं है। $:यह निर्धारित करने के लिए मूल्यांकन करें कि क्या आपका रास्ता शामिल है या नहीं। तो रूबी 1.9 में आपको पूरे रास्ते का उपयोग करना चाहिए, जो हमेशा एक सुरक्षित शर्त है।

फिर आप फ़ाइल का उपयोग requireया loadशामिल कर सकते हैं ।

requireइसे खोजने की कोशिश करते समय आपको फ़ाइल का प्रत्यय जोड़ने की आवश्यकता नहीं होती है और केवल एक बार फ़ाइल को शामिल करना होगा। ज्यादातर समय के requireबजाय इस्तेमाल किया जाना चाहिए load

यदि आप रूबी 1.8 का उपयोग करने जा रहे हैं, तो $ LOAD_PATH (रूबी) में एक निर्देशिका जोड़ना देखें


2

टेक्स्ट एडिटर में माणिक कोड टाइप करें

इसे एक्सटेंशन .rb के साथ सहेजें (उदाहरण के लिए: Demo.rb )।

लिनक्स में, अपना टर्मिनल खोलें फिर निर्देशिका को उस फ़ाइल के वर्तमान स्थान में बदलें (सीडी कमांड का उपयोग निर्देशिका को बदलने के लिए किया जाता है)।

उसके बाद, irb और अपना फ़ाइल नाम टाइप करें (अपना एक्सटेंशन (.rb) शामिल करना न भूलें)।

irb का उपयोग करके एक रूबी फ़ाइल लोड करने के लिए यहां क्लिक करें

उस छवि में, मैंने एक साधारण रूबी फ़ाइल लोड की जो केवल "रूबी" प्रिंट करती है।


0

Irb में पथ को लोड करने का एक और तरीका है बस आवश्यकता है तो फ़ाइल को टर्मिनल में खींचें और छोड़ें।-लिनक्स लिनक्स मिंट का उपयोग करके।


लिनक्स टकसाल। क्षमा करें, मुझे इसे जोड़ना चाहिए था।
कैनेडी में माइक कैनेडी

0

उन लोगों के लिए, जो अलग निर्देशिका से .rb फ़ाइल लोड करना चाहते हैं। बस $: चर में निर्देशिका का एक स्ट्रिंग रिपीटर जोड़ें।

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.