NAME

Bolts::Blueprint::BuiltInjector - An injector-oriented builder using a subroutine

VERSION

version 0.143171

SYNOPSIS

use Bolts;

# Using the usual sugar...
artifact thing => (
    ...
    parameters => {
        thing => builder {
            my ($self, $bag, $name, %params) = @_;
            return MyApp::Thing->new(%params);
        },
    },
);

# Or directly...
my $meta = Bolts::Bag->start_bag;

my $artifact = Bolts::Artifact->new(
    ...
    injectors => [
        $meta->locator->acquire('injector', 'parameter_name', {
            key       => 'thing',
            blueprint => $meta->locator->acquire('blueprint', 'built_injector', {
                builder => sub {
                    my ($self, $bag, $name, %params) = @_;
                    return MyApp::Thing->new(%params);
                },
            }),
        }),
    ],
);

DESCRIPTION

This is a blueprint for using a subroutine to fill in an injected artifact dependency.

This differs from Bolts::Blueprint::Built in that it implements Bolts::Blueprint::Role::Injector, which tags this has only accepting named parameters to the builder method, which is required during injection.

ROLES

ATTRIBUTES

builder

Required. This is the subroutine to execute to construct the artifact. The reader for this attribute is named the_builder.

METHODS

builder

This executes the subroutine in the builder attribute.

exists

Always returns true.

AUTHOR

Andrew Sterling Hanenkamp <hanenkamp@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Qubling Software LLC.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.