2010-02-09 22 views
5

मेरे पास एक रूबी स्क्रिप्ट है जो कक्षा को परिभाषित करती है। मैं बयानरूबी स्क्रिप्ट कैसे पता लगा सकता है कि यह irb में चल रहा है?

BoolParser.generate :file_base=>'bool_parser' 

केवल जब स्क्रिप्ट जब नहीं यह है require 'आईआरबी से d एक निष्पादन योग्य के रूप में उत्पन्न होता है, (या -r के माध्यम से कमांड लाइन पर पारित कर दिया) निष्पादित करने के लिए स्क्रिप्ट चाहते हैं। जब भी मेरी रूबी फ़ाइल लोड हो जाती है, इसे निष्पादित करने से रोकने के लिए ऊपर दिए गए कथन के चारों ओर मैं क्या लपेट सकता हूं?

उत्तर

13

शर्त है $0 == __FILE__ ...

!/usr/bin/ruby1.8 

class BoolParser 

    def self.generate(args) 
    p ['BoolParser.generate', args] 
    end 

end 

if $0 == __FILE__ 
    BoolParser.generate(:file_base=>__FILE__) 
end 

... सच है जब स्क्रिप्ट कमांड लाइन से चलाया जाता है ...

$ /tmp/foo.rb 
["BoolParser.generate", {:file_base=>"/tmp/foo.rb"}] 

... लेकिन झूठी जब फ़ाइल की आवश्यकता है या किसी अन्य रूबी स्क्रिप्ट के द्वारा भरी हुई है।

$ irb1.8 
irb(main):001:0> require '/tmp/foo' 
=> true 
irb(main):002:0> 
3

का उपयोग $ 0

$ 0 का मान आईआरबी में "आईआरबी" है

आपकी फ़ाइल में

"/ path/to/फ़ाइल"

एक विवरण here

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

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