App-Templer

 view release on metacpan or  search on metacpan

lib/Templer/Plugin/Redis.pm  view on Meta::CPAN

    if ( !$@ )
    {

        #
        #  OK the module was loaded, but Redis might not be
        # running locally, or accessible remotely so in those
        # cases we'll be disabled.
        #
        #  NOTE: Redis will use $ENV{'REDIS_SERVER'} if that is
        # set, otherwise defaulting to 127.0.0.1:6379.
        #
        eval {$self->{ 'redis' } = new Redis()};
    }

    return $self;
}


=head2 expand_variables

This is the method which is called by the L<Templer::Plugin::Factory>
to expand the variables contained in a L<Templer::Site::Page> object.

Variables are written in the file in the form "key: value", and are
internally stored within the Page object as a hash.

This method iterates over each key & value and updates any that
seem to refer to redis-fetches.

=cut

sub expand_variables
{
    my ( $self, $site, $page, $data ) = (@_);

    #
    #  Get the page-variables in the template.
    #
    my %hash = %$data;

    #
    #  Look for a value of "redis_get" in each key.
    #
    foreach my $key ( keys %hash )
    {
        if ( $hash{ $key } =~ /^redis_get\((.*)\)/ )
        {

            #
            # The lookup value.
            #
            my $rkey = $1;

            #
            #  Strip leading/trailing whitespace and quotes
            #
            $rkey =~ s/^\s+|\s+$//g;
            $rkey =~ s/^["']|['"]$//g;

            #
            #  If we have redis, and it is alive/connected, then use it.
            #
            if ( $self->{ 'redis' } &&
                 $self->{ 'redis' }->ping() )
            {
                $hash{ $key } = $self->{ 'redis' }->get($rkey);
            }
        }

    }

    #
    #  Return.
    #
    return ( \%hash );
}


#
#  Register the plugin.
#
Templer::Plugin::Factory->new()->register_plugin("Templer::Plugin::Redis");



( run in 1.251 second using v1.01-cache-2.11-cpan-df04353d9ac )