2010-10-09 10 views
24

मुझे रूबी में फ़ाइलों को आयात करने में वास्तव में कोई समस्या नहीं है। मैं विंडोज एक्सपी में रूबी ऐप बना रहा हूं। ऐप के लिए सभी क्लास फाइल "C:/Documents/Prgm/Surveyor_Ruby/lib" में हैं। लेकिन जब मैं require किसी अन्य फ़ाइल में एक फ़ाइल, न तो रूबी और न ही irb आवश्यक फ़ाइल पा सकते हैं।न तो रूबी और न ही irb वर्तमान निर्देशिका में .rb फ़ाइल लोड कर सकते हैं

वर्तमान निर्देशिका की सामग्री:

C:\Documents\Prgm\Surveyor_Ruby\lib>irb 
irb(main):001:0> Dir.pwd 
=> "C:/Documents/Prgm/Surveyor_Ruby/lib" 

... अभी तक आईआरबी survey.rb लोड नहीं कर सकता:

C:\Documents\Prgm\Surveyor_Ruby\lib>dir 
Volume in drive C has no label. 
Volume Serial Number is AAAA-BBBB 

Directory of C:\Documents\Prgm\Surveyor_Ruby\lib 

10/09/2010 06:32 PM <DIR>   . 
10/09/2010 06:32 PM <DIR>   .. 
10/08/2010 03:22 PM    5,462 main (commented).rb 
10/08/2010 03:41 PM    92 question.rb 
10/08/2010 09:06 PM    2,809 survey.rb 
10/09/2010 06:25 PM    661 surveyor.rb 
10/08/2010 01:39 PM    1,546 test.rb 
       5 File(s)   10,570 bytes 
       2 Dir(s) 40,255,045,632 bytes free 

पुष्टिकरण कि आईआरबी सही निर्देशिका में है

irb(main):002:0> require 'survey' 
LoadError: no such file to load -- survey 
     from <internal:lib/rubygems/custom_require>:29:in `require' 
     from <internal:lib/rubygems/custom_require>:29:in `require' 
     from (irb):2 
     from C:/Ruby192/bin/irb:12:in `<main>' 
+2

शीर्ष समाधान के अलावा, 'आवश्यकता'।/सर्वेक्षण 'भी काम करेगा। असल में आपकी वर्तमान निर्देशिका डिफ़ॉल्ट रूप से खोज पथ में नहीं है, इसलिए आपको इसे स्पष्ट रूप से रूबी को इंगित करना होगा, या इसे खोज पथ में शामिल करना होगा। –

उत्तर

2

मेरा मानना ​​है कि पिछली पोस्ट दोनों अलग-अलग उपयोगों के लिए सही हैं। आईआरबी में require के साथ एक पूर्ण पथ का उपयोग करें, एक फ़ाइल के साथ आप require का उपयोग पूर्ण पथ के साथ भी कर सकते हैं, या require_relative का उपयोग कर सकते हैं।

9

एक ही व्यवहार को नोटिस किया गया लेकिन मेरी लिनक्स की जड़ों ने मुझे कोशिश की: .\file.rb और यह आईआरबी में लोड हो गया। स्पष्ट निर्देशिका को स्पष्ट रूप से घोषित करने का प्रयास करें।

+0

यह केवल तभी काम करता है जब वर्तमान निर्देशिका एक ऐसी फाइल होती है जो दोनों फाइलें हैं। –

3

यह लानत गंदा है, लेकिन आप हमेशा बहुत पहली पंक्ति में कर सकते हैं:

$: << '.' 

और बंद आप pwd'ed के साथ जाने की आवश्यकता है। यह आईआरबी के साथ इंटरैक्टिव/रचनात्मक परीक्षण के लिए काफी उपयोगी है

+0

इसके लिए धन्यवाद। मुझे नहीं पता कि क्यों मेरे लिए काम नहीं कर रहा था। –

58

इनमें से कोई नहीं मेरे लिए काम किया, लेकिन ऐसा किया:

irb -I . 
>require 'file' 
=> true 
+1

+1 यह निश्चित रूप से काम करता है। – WattsInABox

+0

मेरा समाधान भी देखें, यह विशेष रूप से ठीक है जब आपने 'pwd' को' $ LOAD_PATH' निर्देशिका के रूप में सेट करने के लिए '-I। 'के साथ irb को आग नहीं लगाया। – Darme

+0

'irb' की अद्भुत विशेषता! – Dan

1

आप rvmsudo के साथ ऐसा करने की कोशिश कर रहे हैं, तो मैंने पाया यह मेरे लिए काम किया :

rvmsudo irb -I '/Absolute/path/to/your/project' 
8

इस आदेश के बारे में कैसे? एक छोटी सी बोझिल लिखने के लिए, लेकिन वास्तव में स्वच्छ और यह हमेशा काम करना चाहिए:

 
➜ $ irb 
> require "#{Dir.pwd}/file_to_load.rb" 
=> true 
9
require './hede' 

या

require_relative 'hede' 

यह दोनों रूबी (1.9.3) और JRuby में मेरे लिए काम करता (1.7.x) लिनक्स पर। मैंने विंडोज़ पर इसका परीक्षण नहीं किया है।

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