handlename's blog

コード片など

Ark::Plugin::Session::State::URIは携帯以外で無効になる

Arkのプラグイン、Session::State::URI
ark-perl/lib/Ark/Plugin/Session/State/URI.pm at master · typester/ark-perl · GitHub

Session IDをURIにのっけて管理するためのものだけど、これはPC(携帯以外)でアクセスすると勝手に無効になるので注意。

60〜67行目あたりを抜粋。

    if ($self->uri_rewrite_mobile_only) {
        my $agent = $self->context->can('mobile_agent')
            or $self->log( debug => q[Require MobileAgent plugin for this feature] );
        if ($agent && $self->context->mobile_agent->is_non_mobile) {
            $self->uri_session_disabled(1);
            return;
        }
    }

uri_rewrite_mobile_onlyが真の時のみ、携帯以外のAgentで無効になるようにはなっているものの、uri_rewrite_mobile_onlyは常に真になるようなのであまり意味ない。

21〜28行目。

has uri_rewrite_mobile_only => (
    is => 'rw',
    lazy => 1,
    default => sub {
        my $self = shift;
        $self->class_config->{mobile_only} || 1;
    },
);

携帯サイトをPCからプレビューしてて、「あるぇ、URLにSession IDが入んないぞ???」ときれいにハマった結果でした。携帯サイトつくるならおとなしくFireMobileSimulator使っときましょう。

追記:
っていうのをTwitterでつぶやいたら id:sfujiwara さんが Sessionが無効になる場合にwarningを吐くようにしてくれました。感謝。