ruby-on-rails - 在 Ruby on Rails IRB 中停止加载脚本执行的最佳方法

标签 ruby-on-rails ruby exit irb

寻找在 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/

相关文章:

ruby-on-rails - Rails,RSpec : How to test, 触发特定的邮件操作

ruby-on-rails - Ruby on Rails - 将变量添加到 params[]

ruby - Ruby Gemspec 中的条件依赖

python - 如何在 python 中的某个时间后退出递归 DFS 算法?

c++ - 是否可以成功包装退出方法?

javascript - Summernote 仅在刷新时才有效

ruby-on-rails - 如何在Rails的Model方法中获取对象的url_for

ruby-on-rails - Ubuntu 在后台运行 Puma 和 Sidekiq 作为守护进程

javascript - ruby中的 'self'和javascript中的 'this'有什么区别

PHP停止构造函数的最佳方法