Bolts::Inference::Moose - Inference engine for Moose classes


version 0.143171


    package MyApp::Thing;
    use Moose;

    has id => ( is => 'ro' );
    has name => ( is => 'ro' );

    package MyApp::Settings;
    use Bolts;

    artifact thing => (
        class => 'MyApp::Thing',
        infer => 'options',

    package MyApp;

    my $settings = MyApp::Settings->new;
    my $thing = $settings->acquire('thing', {
        id => 1,
        name => 'something',
    }); # works!


Performs inferrence for Moose object constructor injection on Bolts::Blueprint::Factory. That is, it is the way in which Bolts will automatically guess how to build your Moose objects, provided you construct them with Bolts::Blueprint::Factory (see the "SYNOPSIS" for an example).

This works by iterating through the attributes on the metaclass for the Moose object set on the "class" in Bolts::Blueprint::Factory of the blueprint. If the attribute has an init_arg set (which all do by default to a name matching the attribute name), then the dependency will be passed to the constructor as a parameter. If the init_arg is undefined, but a setter is provided (i.e., you use isa => 'rw' or use writer => 'set_attr' or accessor => 'attr' when setting up the attribute), the setter will be used for that dependency instead. If neither a setter or an init_arg is defined, then the attribute will be skipped for injection.




This implements the inferrence described in "DESCRIPTION".


Andrew Sterling Hanenkamp <>


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.