从命令行运行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
。