at_exitで終了時の処理を登録する
Rubyでは、at_exitで終了時の処理を登録することができます。
以下では、終了時にresourceがnilになっているかどうかを調べ、nilになっていなければメッセージを表示します。乱数を使って確率1/2で失敗するようにしてあります。
resource = '(Important resource)' at_exit { puts "#{resource} is not released." if resource } if rand < 0.5 puts "Release!" resource = nil end
実行例です。
C:\work> ruby a.rb (Important resource) is not released. C:\work> ruby a.rb (Important resource) is not released. C:\work> ruby a.rb Release! C:\work> ruby a.rb Release! C:\work> ruby a.rb (Important resource) is not released.