Class::Data::Lazy has been released.

Class::Data::Lazy 0.01 has been released on CPAN.

It's very useful when you are writing the Amon2 container object.

In Amon2 world, the application class is the container class. Here is an example code:

package MyApp;
use v5.18.0;

use Cache::Memcached::Fast;
use DBI;

use Class::Accessor::Lite::Lazy qw(
    ro_lazy => [qw(db db_slave)],
);
use Class::Data::Lazy qw(
    cache
);

sub _build_db {
    my $self = shift;
    my $conf = $self->config->{DB} // die "Missing configuration for DB";
    DBI->connect($conf);
}

sub _build_db_slave {
    my $self = shift;
    my $conf = $self->config->{DB_Slave} // die "Missing configuration for DB_Slave";
    DBI->connect($conf);
}

sub _build_cache {
    my $self = shift;
    my $conf = $self->config->{Cache} // die "Missing configuration for Cache";
    Cache::Memcached::Fast->new($conf);
}

(Our rules says, Cache::Memcached::Fast is a persistent object. But DB object should renew per request.)

Why?

In some case, I want to write lazy class accessor.

Published: 2013-12-13(Fri) 12:42