Ruby脚本如何检测到它在irb中运行?
问题描述:
我有一个定义类的Ruby脚本。我想脚本来执行该语句Ruby脚本如何检测到它在irb中运行?
BoolParser.generate :file_base=>'bool_parser'
只有当脚本调用为可执行文件,而不是当它是require
“从IRB D(或通过-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脚本加载的文件。
$ irb1.8
irb(main):001:0> require '/tmp/foo'
=> true
irb(main):002:0>