从命令行运行Ruby库

Run a Ruby library from the command-line

我刚刚学习了Ruby的基础知识,在对Python非常满意的几年之后(我仍然在为一些事情使用Python),但是我想知道是否有一个成语或黑客来解决这个特定的问题。

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

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

然而,在Ruby中似乎找不到等价的。是否有一种方法可以检测当前脚本是否正在从命令行运行?也许是某个Kernel::方法或什么?理想情况下,我希望在脚本底部有这样的内容:

1
2
3
if from_command_line?
  # do something here
end


您要使用:

1
2
3
if __FILE__ == $0
  # do stuff
end

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


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

__FILE__ the current source file name.

$0 Contains the name of the script being executed. May be assignable.

来源:Ruby Quick Ref


同时

1
2
3
if __FILE__ == $0
  Foo.run
end

是我目前使用的常用方法吗?

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

因为像ruby prof这样的程序即使在使用--replace-progname时也能赚0美元。