Catalyst::Action::RenderView::ErrorHandler - Custom errorhandling in deployed applications
version 0.100166
sub end : ActionClass('RenderView::ErrorHandler') {}
We all dread the Please come back later screen. Its uninformative, non- helpful, and in general an awfull default thing to do.
This module lets the developer configure what happens in case of emergency.
We take our configuration from $c->config->{'error_handler'}. If you do no configuration, the default is to look for the file 'root/static/error.html', and serve that as a static file. If all you want is to show a custom, static, error page, all you have to do is install the module and add it to your end action.
$c->config->{'error_handler'}
Is an array of actions you want taken. Each value should be an hashref with atleast the following keys:
If this is true, we will act even in debug mode. Great for getting debug logs AND error-handler templates rendered.
If this regex matches $c->req->path, the action will be skipped. Useful if you want to exclude some paths from triggering emails for instance. Can be used to ignore hacking attempts against PhpMyAdmin and such.
$c->req->path
Can be Log for builtin, or you can prefix it with a +, then we will use it as a fully qualified class name.
The most excellent Stefan Profanter wrote Catalyst::Action::RenderView::ErrorHandler::Action::Email, which lets you send templated emails on errors.
The id you want to have for this action
Either a list of keys, a regexp for matching keys, or a simple string to denote a single stash value.
stash keys that match will be available to template handlers
Configuration as to what to do when an error occurs. We always need to show something to the user, so thats a given. Each handler represents an error state, and a given handler can perform any given number of actions in addition to rendering or sending something to the browser/client.
The action is decided in that order.
Will be sent to your default_view for processing. Can use c.errors as needed
Will be read and served as a static file. This is the only option for fallback, since fallback will be used in case rendering a template failed for some reason.
If the given string begins with an '/', we treat it as an absolute path and try to read it directly. If not, we pass it trough $c->path_to() to get an absolute path to read from.
$c->path_to()
error_handler: actions: # Check out # L<Catalyst::Action::RenderView::ErrorHandler::Action::Email> if # you want to send email from an action - type: Email id: email-devel to: andreas@example.com subject: __MYAPP__ errors: - type: Log id: log-server level: error handlers: 5xx: template: root/error/5xx.tt actions: - email-devel - log-server 500: template: root/error/500.tt actions: - log-server fallback: static: root/static/error.html actions: - email-devel
Implemented to comply with Catalyst::Action interface.
It checks if there are errors, if not it it simply returns, assuming Catalyst::Action::RenderView has handled the job. If there are errors we parse the configuration and try to build our handlers.
Then it calls $self->handle.
$self->handle
Handles a request, by finding the propper handler.
Once a handler is found, it calls render if there are statics or templates, and then performs all actions (if any).
Given either a static file or a template, it will attempt to render it and send it to $context->res->body.
$context->res->body
return a list of rendering data in template from exposed stash
Inherited from Moose
Catalyst::Action::RenderView
Andreas Marienborg <andremar@cpan.org>
Andreas Marienborg <andreas.marienborg@gmail.com>
Pinnapong Silpsakulsuk <ping@abctech-thailand.com>
zdk <nx2zdk@gmail.com>
This software is copyright (c) 2013 by Andreas Marienborg.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Catalyst::Action::RenderView::ErrorHandler, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Catalyst::Action::RenderView::ErrorHandler
CPAN shell
perl -MCPAN -e shell install Catalyst::Action::RenderView::ErrorHandler
For more information on module installation, please visit the detailed CPAN module installation guide.