我有一个定义类的红宝石脚本。我希望脚本执行语句

BoolParser.generate :file_base=>'bool_parser'

仅当将脚本调用为可执行文件时,即 require'd来自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脚本加载文件或加载文件时。

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

其他提示

使用$ 0

在IRB中,$ 0的价值为“ IRB”

在您的文件中是“/path/to/file”

一个解释 这里

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top