Reindeer::Builder - Easily build a new 'Reindeer' style class


This document describes version 0.018 of Reindeer::Builder - released March 28, 2015 as part of Reindeer.


    package My::Reindeer;
    use Reindeer::Builder
        also => {
            exclude => [ ... ], # packages from also
            add     => [ ... ],

    package My::Class;
    use My::Reindeer;

    # profit!
    has foo => (...);


Sometimes you need more than what Reindeer provides... And sometime less. Or there's a conflict with a default extension (e.g. a Catalyst controller with a config that will end up with unrecognized arguments passed to the constructor will blow up if MooseX::StrictConstructor is used).

Reindeer::Builder provides a simple interface to add additional extensions -- or filter the list of default extensions. It's intended to be used in a package of its own that can then be used in the same way Moose or Reindeer is in a package, to set up the metaclass and sugar.


If the package you're using Reindeer::Builder in ends with '::Role', we set up role metaclass and sugar.


We take a set of name / hashref pairs. Right now we only support 'also' for names.

It is legal and supported to add and exclude at the same time.

also / exclude

If given, we expect exclude to be an arrayref of package names to be excluded from the list of extensions. (e.g. this filters what is passed to Moose::Exporter's 'also' argument.


    use Reindeer::Builder also => { exclude => 'MooseX::Something' };

also / add

If given, we expect add to be an arrayref of package names to be added to the list of extensions. (e.g. this augments what is passed to Moose::Exporter's 'also' argument.


    use Reindeer::Builder also => { add => 'MooseX::SomethingElse' };


Please see those modules/websites for more information related to this module.


The development version is on github at http:// and may be cloned from git://


Please report any bugs or feature requests on the bugtracker website

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.


Chris Weyl <>

I'm a material boy in a material world

Please note I do not expect to be gittip'ed or flattr'ed for this work, rather it is simply a very pleasant surprise. I largely create and release works like this because I need them or I find it enjoyable; however, don't let that stop you if you feel like it ;)

Flattr this, gittip me, or indulge my Amazon Wishlist... If you so desire.


This software is Copyright (c) 2011 by Chris Weyl.

This is free software, licensed under:

  The GNU Lesser General Public License, Version 2.1, February 1999