デバック手法:内部状態をマーシャルしてファイルに保存する

昨年からRails+Ajaxで、インタラクティブにある種のWebページを作るソフトを開発しています。開発初期の頃、まだRDBインターフェースの無いときに、RubyのMarshalモジュールを使い内部のオブジェクトを保存/復元できるようなメニューを作っておきました。

完成し、実際にお客様が使うようになってからは不要になってしまったこのメニューですが、最近少し直し使えるようにしました。

お客様のところで不可思議な現象が出た際にこのメニューを使い内部状態をファイルに保存してもらい、そのファイルを開発環境で復元してデバックに活用しています。このソフトはそこそこ複雑な内部データを持っており不可思議な現象が起きたさいに、それが再現できなくて困っていたのですが、このマーシャルしたデータがあるとかなりの確率で現象が再現でき重宝しています ^^)