4

Ruby on Rails の IRB で、ロードされたスクリプトを終了する最良の方法を探しています。Kernel.exit と Kernel.abort により、IRB セッションが完全に終了します。理想的には、これはいくつかの条件付き基準で発生します。

私のスクリプト/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>
4

2 に答える 2

4

__END__キーワードを使用して、パーサーを停止します。

puts "My Script is running!"
__END__
puts "This will never happen"
...

DATAまたは、スクリプトの残りの部分をコメント アウトするだけです (の後に適切な形式のストリームが必要な場合___END__) 。

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

または、スクリプトを開始ブロックに入れて、発生した例外をレスキューします

begin
  puts "My Script is running!"
  raise SystemExit if exit_condition?
  puts "This will never happen if exit condition is true"
rescue SystemExit
end
于 2013-04-09T16:27:39.707 に答える