I got a small bite by unexpected behavior when setting the storage source for CP::Session::Store::FastMmap with path_to().

I went from using a static string to a path_to representing the identical path and it broke the storage. It also, I think, fails silently in the case of CP::Cache::FastMmap.

It took a minute to realize that path_to is returning a Class::Path object. This stringifies fine most of the time but I think b/c FastMmap has underlying C code it doesn't know what to do with the path_to object (just a guess).

This is broken silently:
    cache => {
        backend => {
            store => 'FastMmap',
            share_file => __PACKAGE__->path_to('tmp', 'another_cache'),
        },
    },

This is broken fatally:
    session      => {
        storage => __PACKAGE__->path_to('tmp', 'cache_name'),
    },

While these work fine:
    cache => {
        backend => {
            store => 'FastMmap',
share_file => __PACKAGE__->path_to('tmp', 'another_cache')->stringify,
        },
    },
    session      => {
storage => __PACKAGE__->path_to('tmp', 'cache_name')- >stringify,
    },

Would it be a good idea to change the Catalyst::Plugin::Session::FastMmap::setup() to quote sources? I couldn't easily see where it *might* benefit from a change in CP::Cache.

sub setup {
    my $self = shift;
###    $self->config->{session}->{storage} ||= '/tmp/session';
my $storage = $self->config->{session}->{storage} || '/tmp/ session'; # NEW
    $self->config->{session}->{expires} ||= 60 * 60 * 24;
    $self->config->{session}->{rewrite} ||= 0;

    $self->_session(
        Cache::FastMmap->new(
 ###         share_file  => $self->config->{session}->{storage},
            share_file  => "$storage", # NEW
            expire_time => $self->config->{session}->{expires}
        )
    );
    return $self->NEXT::setup(@_);
}

-Ashley

_______________________________________________
List: [email protected]
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to