2010-02-09 17 views
5

Bir sınıfı tanımlayan bir Ruby komut dosyası var. Senaryonun o require 'irb gelen d olduğunda değil, bir yürütülebilir dosya olarak çağrılan (veya -r aracılığıyla komut satırına geçirilen) yalnızca deyimiBir Ruby komut dosyası, irb içinde çalıştığını nasıl algılar?

BoolParser.generate :file_base=>'bool_parser' 

yürütmek için komut dosyasını istiyorum. Ruby dosyam her yüklendiğinde çalıştırılmasını önlemek için yukarıdaki ifadeyi ne sarabilirim?

cevap

13

durumdur $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 

... doğru olduğunda dosya gerektiğinde veya başka yakut komut dosyası tarafından yüklendiğinde komut ... komut satırından

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

... fakat yanlış olduğu.

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

$ 0

$ 0 değerini IRB kullanmak "irb" dir dosyanıza

"/ path/to/dosya"

bir açıklama here

İlgili konular