CatalystX::LeakChecker(3pm) User Contributed Perl Documentation CatalystX::LeakChecker(3pm)NAME
CatalystX::LeakChecker - Debug memory leaks in Catalyst applications
VERSION
version 0.06
SYNOPSIS
package MyApp;
use namespace::autoclean;
extends 'Catalyst';
with 'CatalystX::LeakChecker';
__PACKAGE__->setup;
DESCRIPTION
It's easy to create memory leaks in Catalyst applications and often they're hard to find. This module tries to help you finding them by
automatically checking for common causes of leaks.
This module is intended for debugging only. I suggest to not enable it in a production environment.
METHODS
found_leaks(@leaks)
If any leaks were found, this method is called at the end of each request. A list of leaks is passed to it. It logs a debug message like
this:
[debug] Circular reference detected:
+------------------------------------------------------+-----------------+
| $ctx->{stash}->{ctx} |
'------------------------------------------------------+-----------------'
It's also able to find leaks in code references. A debug message for that might look like this:
[debug] Circular reference detected:
+------------------------------------------------------+-----------------+
| $a = $ctx->{stash}->{leak_closure}; |
| code reference $a deparses to: sub { |
| package TestApp::Controller::Affe; |
| use warnings; |
| use strict 'refs'; |
| $ctx->response->body('from leaky closure'); |
| }; |
| ${ $ctx } |
'------------------------------------------------------+-----------------'
Override this method if you want leaks to be reported differently.
AUTHORS
Florian Ragwitz <rafl@debian.org> Tomas Doran <bobtfish@bobtfish.net>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Florian Ragwitz.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
perl v5.10.1 2010-03-26 CatalystX::LeakChecker(3pm)
Check Out this Related Man Page
CatalystX::InjectComponent(3pm) User Contributed Perl Documentation CatalystX::InjectComponent(3pm)NAME
CatalystX::InjectComponent - Inject components into your Catalyst application
VERSION
Version 0.024
SYNOPSIS
package My::App;
use Catalyst::Runtime '5.80';
use Moose;
BEGIN { extends qw/Catalyst/ }
...
after 'setup_components' => sub {
my $class = shift;
CatalystX::InjectComponent->inject( into => $class, component => 'MyModel' );
if ( $class->config->{ ... ) {
CatalystX::InjectComponent->inject( into => $class, component => 'MyRootV2', as => 'Controller::Root' );
}
else {
CatalystX::InjectComponent->inject( into => $class, component => 'MyRootV1', as => 'Root' ); # Controller:: will be automatically prefixed
}
};
DESCRIPTION
CatalystX::InjectComponent will inject Controller, Model, and View components into your Catalyst application at setup (run)time. It does
this by creating a new package on-the-fly, having that package extend the given component, and then having Catalyst setup the new component
(via "->setup_component")
So, how do I use this thing?
You should inject your components when appropriate, typically after "setup_compenents" runs
If you're using the Moose version of Catalyst, then you can use the following technique:
use Moose;
BEGIN { extends qw/Catalyst/ }
after 'setup_components' => sub {
my $class = shift;
CatalystX::InjectComponent->inject( into => $class, ... )
};
METHODS
CatalystX::InjectComponent->inject( ... )
into The Catalyst package to inject into (e.g. My::App)
component The component package to inject
as An optional moniker to use as the package name for the derived component
For example:
->inject( into => My::App, component => Other::App::Controller::Apple )
The above will create 'My::App::Controller::Other::App::Controller::Apple'
->inject( into => My::App, component => Other::App::Controller::Apple, as => Apple )
The above will create 'My::App::Controller::Apple'
ACKNOWLEDGEMENTS
Inspired by Catalyst::Plugin::AutoCRUD
AUTHOR
Robert Krimen, "<rkrimen at cpan.org>"
BUGS
Please report any bugs or feature requests to "bug-catalystx-injectcomponent at rt.cpan.org", or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CatalystX-InjectComponent <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CatalystX-
InjectComponent>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc CatalystX::InjectComponent
You can also look for information at:
o RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=CatalystX-InjectComponent <http://rt.cpan.org/NoAuth/Bugs.html?Dist=CatalystX-InjectComponent>
o AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/CatalystX-InjectComponent <http://annocpan.org/dist/CatalystX-InjectComponent>
o CPAN Ratings
http://cpanratings.perl.org/d/CatalystX-InjectComponent <http://cpanratings.perl.org/d/CatalystX-InjectComponent>
o Search CPAN
http://search.cpan.org/dist/CatalystX-InjectComponent/ <http://search.cpan.org/dist/CatalystX-InjectComponent/>
ACKNOWLEDGEMENTS COPYRIGHT & LICENSE
Copyright 2009 Robert Krimen, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
perl v5.14.2 2012-04-06 CatalystX::InjectComponent(3pm)