perl Catalyst::Plugin::Session::Manager

Catalyst って Plugin 推奨してないみたいだけど、スタンダードがわからないので一部 Plugin を利用してる。
Session::Manager は使い勝手いいんだけど(他を知らない)、ストアしたデータを初期化してくれちゃうので、
prepare 時に一度 get しておくように変更して、クラス名も変えて使ってみてる。
初期化されちゃうのは

  1. /hoge/entry とかでフォームを出力、あれこれ入力後 /hoge/confirm に飛ばす
  2. /hoge/confirm でエラーチェック後確認画面、このときにセッションにもぶっこむ

2 の出力時点で出力される HTML に css とか js とか入っているとブラウザから GET が走る。
特にサーバ側で rewrite 処理とかを施してない場合は catalyst の default : Private で受けてしまう。
この際に既存の Session::Manager::Storage::CDBI で finalize が走ったときに空のデータをセッションデータとして保存してしまう。
Session::Manager 内部では使わないときはデータの呼び出しを行わない。でも finalize で set 処理が走ってしまう。
もしかしたら回避方法あるのかもしれないけど…
そんなわけで、一部改良。ついでに Session::Manager::Client::Cookiecookie 名称を設定できるようにしておいた。
既存のものは session という名前がベタ書きされている。

もしかしたら Session(::Store|::State) とか使う方がベターなのかな?