ループ内に書かれた`binding.irb`を終了させる

2024年12月09日

これは .ごっ!のアドベントカレンダー の9日目の記事です。

結論

disable_irb コマンドを実行すると、そのセッション内のirbが以降すべて無効になります。 これによってプログラムを強制終了させることなく、処理を続行させることができます。

以下のrubyのコードがあったとします。

100.times do
  binding.irb
end

p "end"

この状態で実行し、irbが呼び出されたときに disable_irb を実行すると以下のような動作になります。

$ ruby app.rb

From: app.rb @ line 2 :

    1: 100.times do
 => 2:   binding.irb
    3: end
    4:
    5: p "end"

irb(main):001> disable_irb
"end"
$

これによって、exitquit を大量入力せずとも処理を進める事ができます。

参考

ProfilePicture

Yuta Goto

フリーランスのソフトウェアエンジニアです。現在はReact.jsを使用したWebフロントエンドの開発やRuby on Railsを使用したサーバサイドの開発を行っています。