ArkでSessionを使う時はCatalystと書き方が違うので注意

Catalyst

my $val = $c->session->{ $key };
$c->session->{ $key } = $new_val;
delete $c->session->{ $key };

Ark

my $val = $c->session->get($key);
$c->session->set($key, $new_val);
$c->session->remove($key);

Catalystと同じやり方で書くと、Sessionオブジェクト自体には値をセット出来るけど、セッションには保存されないので、後で値を引っ張ってくる時に「動かねー」と頭を抱えることになるので気を付けましょう。クセです。

なんでこういう仕様になっているかと言うと、typesterさん曰く

@nekoya: そうなんですよねー、でも $c->session は呼ばれるまで初期化されないようなオブジェクトにしたかったのでそれができないんすなー

とのこと。

ArkはCatalyst「ライク」な軽量フレームワークであって、Lite Catalystではないのでこういう細かい違いは出てきて当然。そのへんの資料がまだまだ少ないので、そのへん自分で書けることは書いていきたいすなぁ。

# remove忘れてたから追加した