Index: t/12check_error_scope.t
===================================================================
--- t/12check_error_scope.t (revision 12002)
+++ t/12check_error_scope.t (working copy)
@@ -9,19 +9,21 @@
use lib "$FindBin::Bin/lib";
use Test::More tests => 3;
+BEGIN {
+ use Catalyst::Plugin::Static::Simple;
+ Catalyst::Plugin::Static::Simple->meta->add_before_method_modifier(
+ 'prepare_action',
+ sub {
+ my ($c) = @_;
+ eval { die("FOO"); };
+
+ ok( $@, '$@ has a value.' );
+ }
+ );
+}
use Catalyst::Test 'TestApp';
-TestApp->config->{ static }->{ dirs } = [ qr{stuff/} ];
-my $orig_sub = *Catalyst::Plugin::Static::Simple::prepare_action{CODE};
-
-*Catalyst::Plugin::Static::Simple::prepare_action = sub {
- my ($c) = @_;
-
- eval { die("FOO"); };
-
- ok ($@, '$@ has a value.');
- return $orig_sub->( $c );
-};
+TestApp->config->{static}->{dirs} = [qr{stuff/}];
ok( my $res = request("
http://localhost/"), 'request ok' );
ok( $res->code == 200, q{Previous error doesn't crash static::simple} );
Index: lib/Catalyst/Plugin/Static/Simple.pm
===================================================================
--- lib/Catalyst/Plugin/Static/Simple.pm (revision 12002)
+++ lib/Catalyst/Plugin/Static/Simple.pm (working copy)
@@ -1,8 +1,6 @@
package Catalyst::Plugin::Static::Simple;
-use strict;
-use warnings;
-use base qw/Class::Accessor::Fast Class::Data::Inheritable/;
+use Moose::Role;
use File::stat;
use File::Spec ();
use IO::File ();
@@ -11,9 +9,10 @@
our $VERSION = '0.26';
-__PACKAGE__->mk_accessors( qw/_static_file _static_debug_message/ );
+has _static_file => ( is => 'rw' );
+has _static_debug_message => ( is => 'rw', isa => 'Str' );
-sub prepare_action {
+before prepare_action => sub {
my $c = shift;
my $path = $c->req->path;
my $config = $c->config->{static};
@@ -58,11 +57,9 @@
# and does it exist?
$c->_locate_static_file( $path );
}
+};
- return $c->next::method(@_);
-}
-
-sub dispatch {
+override dispatch => sub {
my $c = shift;
return if ( $c->res->status != 200 );
@@ -74,20 +71,18 @@
return $c->_serve_static;
}
else {
- return $c->next::method(@_);
+ return super;
}
-}
+};
-sub finalize {
+before finalize => sub {
my $c = shift;
# display all log messages
if ( $c->config->{static}{debug} && scalar @{$c->_debug_msg} ) {
$c->log->debug( 'Static::Simple: ' . join q{ }, @{$c->_debug_msg} );
}
-
- return $c->next::method(@_);
-}
+};
sub setup {
my $c = shift;