ちょっとハマったのでメモ。 Ruby の Timeout ライブラリを使うと、一定の時間が過ぎても終わらない処理を中断することができます。 require 'timeout' def hoge sleep end def main Timeout.timeout(3) do hoge end rescue Timeout::Error => e p 'main: timeout', e.backtrace.first end main このスクリプトを実行すると3秒たってから終了します。 % ruby t1.rb "main: timeout" "t1.rb:4:in `sleep'" バックトレースから 4行目の sleep 中でタイムアウトが発生したことがわかります。 次に Timeout.timeout を入れ子にしてみます。 require 'timeout' def hoge T