寻找在 Ruby on Rails 的 IRB 中退出加载脚本的最佳方式。 Kernel.exit 和 Kernel.abort 会让你完全退出 IRB session 。理想情况下,这会在某些条件条件下发生。
我的脚本/my_script.rb:
puts "My Script is running!"
# if some criteria, stop execution of this script without stoping IRB
puts "This will never happen"
理想的结果:
$ rails console
irb(main):001:0> load 'script/my_script.rb'
My Script is running!
irb(main):002:0>
最佳答案
使用 __END__
关键字停止解析器。
puts "My Script is running!"
__END__
puts "This will never happen"
...
或者只是注释掉脚本的其余部分(如果您需要在 ___END__
之后的格式良好的 DATA
流)
puts "My Script is running!"
=begin
puts "This will never happen"
...
=end
如果您需要根据逻辑而不是在固定点提前退出,您可以将脚本主体放在一个函数中并提前返回。
def do_work
puts "My Script is running!"
...
return if exit_condition?
puts "This will never happen if exit condition is true"
...
end
do_work
或者,将您的脚本放在开始 block 中并挽救您引发的异常
begin
puts "My Script is running!"
raise SystemExit if exit_condition?
puts "This will never happen if exit condition is true"
rescue SystemExit
end
关于ruby-on-rails - 在 Ruby on Rails IRB 中停止加载脚本执行的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907252/