从命令运行一个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中找到类似的功能。
__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
。