zvo*_*ase 15 ruby command-line
我已经学习了Ruby几年后对Python非常满意的基础知识(我仍在使用Python做某些事情),但我想知道是否有成语或黑客可以解决这个特殊问题.
我有一个Ruby脚本,我希望能够require script_name
使用它,但我也希望能够ruby script_name.rb
从终端运行并让它作为命令行脚本运行.在Python中,这可以通过在脚本底部使用以下结构来完成:
if __name__ == '__main__':
# do something here
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法在Ruby中找到相应的东西.有没有办法检测当前脚本是否从命令行运行?也许某种Kernel::
方法或什么?理想情况下,我喜欢的是脚本底部的类似内容:
if from_command_line?
# do something here
end
Run Code Online (Sandbox Code Playgroud)
Gar*_*ler 23
你想用:
if __FILE__ == $0
# do stuff
end
Run Code Online (Sandbox Code Playgroud)
__FILE__
是源文件名,$0
是当前正在执行的脚本的名称.
而
if __FILE__ == $0
Foo.run
end
Run Code Online (Sandbox Code Playgroud)
是我目前正在使用的常用方法
if File.identical?(__FILE__, $0)
Foo.run
end
Run Code Online (Sandbox Code Playgroud)
因为像ruby-prof这样的程序即使在使用时也会使$ 0不相等 .__FILE__
--replace-progname