Skip to content

Instantly share code, notes, and snippets.

use 5.014;
use warnings;
package MyContainer {
use Moose;
use Bread::Board::Declare;
use Bread::Board;
use Bread::Board::Dumper;
use DBIx::Connector;
package MyContainer;
use 5.010;
use Moose;
use Bread::Board::Declare;
has config => (
isa => 'Config::Merge',
is => 'bare',
lifecycle => 'Singleton'
block => sub { Config::Merge->new('/path/to/config'); },
package MyContainer;
use 5.010;
use Moose;
use Bread::Board::Declare;
sub instance {
state $locator = __PACKAGE__->new;
return $locator;
}
package MyContainer;
use 5.010;
use Moose;
use Bread::Board;
sub instance {
state $locator = __PACKAGE__->new;
return $locator;
}
package Role::DBH;
...
has _config => (
isa => 'Config::Merge',
is => 'ro'
lazy => 1,
default => sub { Config::Merge->new('/path/to/config'); },
);
@xenoterracide
xenoterracide / ProductVariant.pm
Created October 18, 2013 20:29
Mostly Hard coded dependency
package ProductVariant;
...
sub _load_categories {
...
my $config = Config::Merge->new('/path/to/config');
my $dbh = DBI->connect( $config->('db.dsn'), $config->('db.user'), $config->('db.pass') );
}
@xenoterracide
xenoterracide / Create.pm
Last active December 17, 2015 17:59
Interface example
Package Interface::Create;
use Moose::Role;
use Type::Params qw( compile );
use Types::Standard qw( slurpy HashRef);
around create => sub {
my $orig = shift;
my $self = shift;
state $check = compile( slurpy HashRef );
package TestBase;
use Moose;
use Bread::Board::Declare;
extends 'Bread::Board::Container';
__PACKAGE__->meta->make_immutable;
1;
package OurApp::BreadBoard;
use Moose;
use Class::Load 0.20 'load_class';
use Bread::Board::Declare;
has config_file => ( # you can override the location in your .psgi by passing this param to new
    isa       => 'Str',
    is        => 'ro',
    value     => 'my.conf',
);
@xenoterracide
xenoterracide / ioc-example.pl
Created November 11, 2012 04:22
Inversion of Control and Dependency Injection example
use 5.014;
use warnings;
use Class::Load 'load_class';
package PaymentGateway {
use Moose;
sub submit {
return int( rand(2) );
}