On 3/14/2014 07:46, Lee Carmichael wrote:
We do this:
hook before_error_init => sub {
my $err_obj = shift;
if ( request->path !~ m{^/api/} && ( my $ser =
setting('serializer') ) ) {
set 'serializer', undef;
$err_obj->{_save_serializer} = $ser;
}
};
And then restore it:
hook after_error_render => sub {
my $response = shift;
my $err_obj = vars->{_save_err_obj};
if ( my $ser = delete $err_obj->{_save_serializer} ) {
set 'serializer', $ser;
}
};
After using this for a while, I noticed that after an error happens, the
serializer setting isn't getting restored. This simpler rewrite appears
to have the same effect, without the problem:
hook before_error_init => sub {
set('serializer', undef) if request->path !~ m{^/api/};
};
hook after_error_render => sub {
set('serializer', 'JSON') unless defined setting('serializer');
};
The restoration code is heavy-handed and violates the DRY principle, but
I think it will work for our purposes.
_______________________________________________
dancer-users mailing list
[email protected]
http://lists.preshweb.co.uk/mailman/listinfo/dancer-users