从命令行运行Ruby库

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是当前正在执行的脚本的名称.


Mar*_*łoń 7

您可以在ruby中找到类似的功能.

__FILE__当前的源文件名.

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

来源:Ruby Quick Ref


And*_*imm 5

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