NAME
   MooseX::Singleton - turn your Moose class into a singleton

VERSION
   Version 0.16

SYNOPSIS
       package MyApp;
       use MooseX::Singleton;

       has env => (
           is      => 'rw',
           isa     => 'HashRef[Str]',
           default => sub { \%ENV },
       );

       package main;

       delete MyApp->env->{PATH};
       my $instance = MyApp->instance;
       my $same = MyApp->instance;

DESCRIPTION
   A singleton is a class that has only one instance in an application.
   "MooseX::Singleton" lets you easily upgrade (or downgrade, as it were)
   your Moose class to a singleton.

   All you should need to do to transform your class is to change "use
   Moose" to "use MooseX::Singleton". This module uses a new class
   metaclass and instance metaclass, so if you're doing metamagic you may
   not be able to use this.

   "MooseX::Singleton" gives your class an "instance" method that can be
   used to get a handle on the singleton. It's actually just an alias for
   "new".

   Alternatively, "YourPackage->method" should just work. This includes
   accessors.

TODO
   Always more tests and doc
   Fix speed boost
       "instance" invokes "new" every time "Package->method" is called,
       which incurs a nontrivial runtime cost. I've implemented a
       short-circuit for this case, which does eliminate nearly all of the
       runtime cost. However, it's ugly and should be fixed in a more
       elegant way.

BUGS
   All complex software has bugs lurking in it, and this module is no
   exception. If you find a bug please either email me, or add the bug to
   cpan-RT.

AUTHOR
   Shawn M Moore <[email protected]>

SOME CODE STOLEN FROM
   Anders Nor Berle <[email protected]>

AND PATCHES FROM
   Ricardo SIGNES <[email protected]>

   Dave Rolsky <[email protected]>

COPYRIGHT AND LICENSE
   Copyright 2007, 2008 Shawn M Moore.

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