从命令行运行Ruby库

我已经学习了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 

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

__FILE__当前的源文件名。

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

来源: Ruby Quick Ref

你想用:

 if __FILE__ == $0 # do stuff end 

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

 if __FILE__ == $0 Foo.run end 

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

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

因为像ruby-prof这样的程序可以使$ 0不等于 __FILE__即使你使用了--replace-progname