irb から WIN32OLE を使うときのおまじない

WIN32OLE を使って Excel のファイルを開いているときに、うっかり irb を終了すると Excel のプロセスが残ってしまう。

そこで、このおまじない。

$ irb -rwin32ole
irb(main):001:0> excel = WIN32OLE.new 'Excel.Application'
=> #<WIN32OLE:0x1014ecd0>
irb(main):002:0> at_exit{excel.Quit}  # おまじない
=> #<Proc:0x1014c7dc@(irb):2>
    ... ここで何かする ...
irb(main):999:0> exit  # ここで excel.Quit される

終了時に at_exit() で登録した Proc を実行してくれるので、そこで後始末をする。クロージャだから、いつ呼ばれても安心。
これで Excel のゾンビを増殖させることもなくなった。

irb を使わずにスクリプトに書くなら、わざわざ at_exit() する必要はない。

excel = WIN32OLE.new 'Excel.Application'

begin
    ... ここで何かする ...
ensure
  excel.Quit
end

普通に後始末すればいいだけ。