X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction%2FSerialize%2FView.pm;h=36995329bdfba7384c926c004fd1108b9970df9b;hb=40de934ce925aa9fbf1d2fa15846b5c0de9ec790;hp=baaec85f86ce2695602d340380288d71ae28eb5a;hpb=58c1c5f55deae2aacef7d0662acb4aa41a6786bd;p=catagits%2FCatalyst-Action-REST.git diff --git a/lib/Catalyst/Action/Serialize/View.pm b/lib/Catalyst/Action/Serialize/View.pm index baaec85..3699532 100644 --- a/lib/Catalyst/Action/Serialize/View.pm +++ b/lib/Catalyst/Action/Serialize/View.pm @@ -4,10 +4,17 @@ use namespace::autoclean; extends 'Catalyst::Action'; +our $VERSION = '1.01'; +$VERSION = eval $VERSION; + sub execute { my $self = shift; my ( $controller, $c, $view ) = @_; + # Views don't care / are not going to render an entity for 3XX + # responses. + return 1 if $c->response->status =~ /^(?:204|3\d\d)$/; + my $stash_key = ( $controller->{'serialize'} ? $controller->{'serialize'}->{'stash_key'} : @@ -19,7 +26,17 @@ sub execute { return; } - return $c->view($view)->process($c, $stash_key); + if ($c->view($view)->process($c, $stash_key)) { + return 1; + } else { + # This is stupid. Please improve it. + my $error = join("\n", @{ $c->error }) || "Error in $view"; + $error .= "\n"; + $c->clear_errors; + die $error; + } } +__PACKAGE__->meta->make_immutable; + 1;