The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Catalyst::Plugin::Hooks - Add hooks to Catalyst engine actions

SYNOPSIS

In MyApp.pm:

  use Catalyst qw(
    -Debug
    Hooks
  );

In Some model:

  sub new {
    my $self = shift;
    my ( $c ) = @_;

    $self->NEXT::new( @_ );

    open my $filehandle, "> foo.log";

    $c->add_after_finalize_hook( sub {
        $filehandle->flush();
    }

    return $self;
  }

DESCRIPTION

Implements hooks on Catalyst's engine actions. See Catalyst::Manual::Internals for when the different actions are called. This is usefull for when you want some code run after all actions for a request are completed. Let's say you want to flush your log after the request is done. You can achieve this by calling $c-add_after_finalize_hook( sub { warn "Request done, time to cleanup"; $fh->flush } );

METHODS

All of these methods are currently hookable:

    handle_request
    prepare
    prepare_request
    prepare_connection
    prepare_query_parameters
    prepare_headers
    prepare_cookies
    prepare_path
    prepare_body
    prepare_body_parameters
    prepare_parameters
    prepare_uploads
    prepare_action
    dispatch
    finalize
    finalize_uploads
    finalize_error
    finalize_headers
    finalize_cookies
    finalize_body

To add a before hook, call $c->add_ <method name> _hook( sub { some code } );>

To add an after hook, call $c->add_after_ <method name> _hook( sub { some code } );>

$c->add_before_ <method name> _hook is an alias to $c->add_ <method name> _hook.

SEE ALSO

Catalyst, Catalyst::Manual::Internals

AUTHOR

Berik Visschers <berikv@xs4all.nl>