Rubyスクリプトは、IRBで実行されていることをどのように検出できますか?
質問
クラスを定義するRubyスクリプトがあります。スクリプトにステートメントを実行したいと思います
BoolParser.generate :file_base=>'bool_parser'
スクリプトが実行可能ファイルとして呼び出された場合にのみ、 require
IRBから(またはコマンドラインで渡された -r
)。 Rubyファイルがロードされるたびに実行されないように、上記のステートメントを何を包み込むことができますか?
解決
状態 $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"}]
...しかし、ファイルが別のRubyスクリプトによって必要またはロードされている場合はfalse。
$ irb1.8
irb(main):001:0> require '/tmp/foo'
=> true
irb(main):002:0>
他のヒント
所属していません StackOverflow