我已经学习了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
答案 0 :(得分:23)
您想使用:
if __FILE__ == $0
# do stuff
end
__FILE__
是源文件名,$0
是当前正在执行的脚本的名称。
答案 1 :(得分:7)
答案 2 :(得分:5)
虽然
if __FILE__ == $0
Foo.run
end
是常用方法,我目前正在使用
if File.identical?(__FILE__, $0)
Foo.run
end
因为像ruby-prof can make $0 not equal __FILE__
这样的程序即使您使用--replace-progname
也是如此。