2010-10-28 14 views
11

में मैं एक रूबी फ़ाइल प्राप्त करने की कोशिश कर रहा हूं और मुझे लगता है कि मैं पागल हो रहा हूं। मेरे सेटअप के रूप में मेंरूबी को "लोड करने के लिए ऐसी कोई फ़ाइल" त्रुटि की आवश्यकता नहीं है अभी तक पथ

दो फ़ाइलें इस प्रकार

 
CommandRunner 
Benchmarker 

Benchmarker इस बिंदु पर मुख्य कार्यक्रम है और CommandRunner की आवश्यकता के लिए करना चाहता है '/ raid1/माणिक कोड/बेंचमार्क /', मैं एक गुच्छा की कोशिश की है विभिन्न चीजों में से और उनमें से कोई भी काम नहीं करता है। निम्नलिखित बातें मैं

 
require './CommandRunner' 
 
$LOAD_PATH.unshift File.expand_path(File.dirname($PROGRAM_NAME)) 
require 'CommandRunner' 
 
$LOAD_PATH.unshift File.expand_path(File.dirname($PROGRAM_NAME)) 
require './CommandRunner' 

मैं भी require_relative का उपयोग करके उपरोक्त क्रमपरिवर्तन की सभी की कोशिश की है Benchmarker

की शुरुआत में
 
require 'CommandRunner' 
डाल दिया है के सभी की एक सूची है। मैंने इसे emacs के अंदर फ़ाइल को irb में लोड करने का प्रयास किया है, और मैंने इसे कमांड लाइन पर आज़माया है। Irb में एक बिंदु पर यह
require 'CommandRunner'
के साथ एक बार लोड हो जाएगा और फिर तब तक लोड होगा जब तक कि मैं इसे वापस './CommandRunner' पर स्विच नहीं करता और फिर यह एक बार फिर लोड हो जाएगा।

मैं वास्तव में त्रुटि कहना

 
`require_relative': no such file to load -- 
/raid1/ruby-code/benchmark/CommandRunner (LoadError) 

जो फाइल करने के लिए सही रास्ता है लिया है!

मैंने इसे लोड करने के लिए स्विच किया है और काम करने के लिए लगता है, मुझे अजीब व्यवहार दिखाई दे रहा है लेकिन यह शायद मुझे हो सकता है। क्या किसी को पता है कि यहां क्या होगा?

उत्तर

6

क्या कमांडरनर फ़ाइल का नाम है और कमांडरुनर.आरबी नहीं है? रूबी फाइलों के लिए मानक नामकरण सम्मेलन लोअरकेस और अंडरस्कोर का उपयोग करना है, भले ही कक्षा का नाम कमांडरनर होगा, फ़ाइल कमांड_रुनर.आरबी होगी, और फिर 'command_runner' को काम करना चाहिए।

+0

फ़ाइल का नाम कमांडरनर है, मैं इसे बदल सकता हूं क्योंकि मुझे यकीन नहीं था कि मानक अभ्यास क्या था लेकिन अभी यह फ़ाइल का नाम है। – asm

+3

मुझे प्रलेखन में नहीं मिला है कि यह विशेष रूप से समर्थित नहीं है। यदि आप CommandRunner को CommandRunner.rb में बदलते हैं, तो यह काम करेगा, लेकिन मुझे लगता है कि यह eval.c में एक बग हो सकता है कि यह फ़ाइल कमांडरनर नहीं ढूंढ रहा है (और बदतर, आपको बता रहा है कि फ़ाइल मौजूद नहीं है)। –

+7

आह, मुझे लगता है कि मैंने इसे पाया। Http://ruby-doc.org/core/classes/Kernel.html#M005941 "से ... अन्यथा, रुबी नाम' '.rb '',' '.so '' जोड़ने की कोशिश करता है, और इसी तरह नाम पर। " इसलिए यह निर्दिष्ट करता है कि यदि कोई एक्सटेंशन नहीं दिया गया है, तो रूबी वैध एक्सटेंशन जोड़ने का प्रयास करेगा, इसलिए एक्सटेंशन को निर्दिष्ट नहीं किया गया है। दूसरे शब्दों में, यदि आप इसकी आवश्यकता चाहते हैं तो कोई एक्सटेंशन मान्य नहीं माना जाता है। –