从命令行运行Ruby库

时间:2009-01-28 10:04:37

标签: ruby command-line

我已经学习了Ruby几年后对Python非常满意的基础知识(我还在使用Python做某些事情),但是我想知道是否有一个成语或黑客来解决这个问题问题

我有一个Ruby脚本,我希望能够require script_name使用,但我也希望能够从终端运行ruby script_name.rb并让它作为一个命令行脚本。在Python中,这可以通过在脚本底部使用以下结构来完成:

if __name__ == '__main__':
    # do something here

但是,我似乎无法在Ruby中找到相应的东西。有没有办法检测当前脚本是否从命令行运行?也许有些Kernel::方法或其他东西?理想情况下,我喜欢的是脚本底部的类似内容:

if from_command_line?
  # do something here
end

3 个答案:

答案 0 :(得分:23)

您想使用:

if __FILE__ == $0
  # do stuff
end

__FILE__是源文件名,$0是当前正在执行的脚本的名称。

答案 1 :(得分:7)

您可以在ruby中找到类似的功能。

  

__ FILE __ 当前的源文件名。

     

$ 0 包含正在执行的脚本的名称。可以分配。

来源:Ruby Quick Ref

答案 2 :(得分:5)

虽然

if __FILE__ == $0
  Foo.run
end

是常用方法,我目前正在使用

if File.identical?(__FILE__, $0)
  Foo.run
end

因为像ruby-prof can make $0 not equal __FILE__这样的程序即使您使用--replace-progname也是如此。