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
普通に後始末すればいいだけ。