Enclose methods in transactions
Clone or download
Pull request Compare This branch is 2 commits ahead of ruoso:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib/MooseX
t
.gitignore
Changes
MANIFEST
Makefile.PL
README

README

NAME
    MooseX::TransactionalMethods - Syntax sugar for transactional methods

SYNOPSIS
      package Foo::Bar;
      use MooseX::TransactionalMethods; # includes Moose
      
  has schema => (is => 'ro');
      
  transactional foo => sub {
         # this is going to happen inside a transaction
      };

DESCRIPTION
    This method exports the "transactional" declarator that will enclose the
    method in a txn_do call.

DECLARATOR
    transactional $name => $code
        When you declare with only the name and the coderef, the wrapper
        will call 'schema' on your class to fetch the schema object on which
        it will call txn_do to enclose your coderef.

    transactional $name => $schema, $code
        When you declare sending the schema object, it will store it in the
        method metaclass and use it directly without any calls to this
        object.

        NOTE THAT MIXING DECLARTIONS WITH SCHEMA AND WITHOUT SCHEMA WILL
        LEAD TO PAINFULL CONFUSION SINCE THE WRAPPING IS SPECIFIC TO THAT
        CLASS AND THE BEHAVIOR IS NOT MODIFIED WHEN YOU OVERRIDE THE METHOD.
        PREFER USING THE DYNAMIC DECLARATOR WHEN POSSIBLE.

AUTHORS
    Daniel Ruoso <daniel@ruoso.com>

    With help from rafl and doy from #moose.

COPYRIGHT AND LICENSE
    Copyright 2010 by Daniel Ruoso et al

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