仅在从命令行调用脚本时运行代码

src*_*ulo 28 ruby command-line

因此,当我从命令行调用我的脚本时,我希望它接受一个int并使用值执行某些操作:

ruby script.rb


puts ARGV[0], etc...
Run Code Online (Sandbox Code Playgroud)

但是,无论何时加载或需要脚本并且不从命令行调用脚本,我都想完全跳过这部分代码.如何检测脚本是通过命令行调用还是仅加载?谢谢!

Phr*_*ogz 62

将它放在脚本的底部是很常见的:

if __FILE__==$0
  # this will only run if the script was the main, not load'd or require'd
end
Run Code Online (Sandbox Code Playgroud)

因为我喜欢在我的文件顶部看到主要操作,所以我通常将def run!第一个方法放在文件中,然后使用以下命令结束文件:

run! if __FILE__==$0
Run Code Online (Sandbox Code Playgroud)

  • Rubocop告诉我把它改成`if __FILE__ == $ PROGRAM_NAME`;) (8认同)