Shawn M Moore > MooseX-Singleton-0.19 > MooseX::Singleton

Download:
MooseX-Singleton-0.19.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  4
Open  3
Stalled  1
View/Report Bugs
Module Version: 0.19   Source   Latest Release: MooseX-Singleton-0.29

NAME ^

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

VERSION ^

Version 0.18, released 24 May 08

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.

If you need to reset your class's singleton object for some reason (e.g. tests), you can call YourPackage->_clear_instance.

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.

AUTHORS ^

Shawn M Moore <sartak@gmail.com>

Dave Rolsky <autarch@urth.org>

SOME CODE STOLEN FROM ^

Anders Nor Berle <debolaz@gmail.com>

AND PATCHES FROM ^

Ricardo SIGNES <rjbs@cpan.org>

COPYRIGHT AND LICENSE ^

Copyright 2007, 2008 Infinity Interactive

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

syntax highlighting: