After some thought, I realise that patching this is a bad idea because then the before_template_render hook will not be called after any exception. Instead I will move my database call outide the hook, and I can add a small note to the error_template documentation. Sorry for the noise! On 14 April 2012 06:57, Alex C <calyx238@gmail.com> wrote:
I noticed this when trying to make a database call in the before_template_render hook (to conditionally set a token if a row exists). To reproduce:
$ echo "my custom error message" > views/error.tt
--------- package App; use Dancer ':syntax';
set show_errors => 0; set error_template => 'error.tt';
hook before_template_render => sub { die; };
get '/' => sub { template 'index.tt'; };
true; ---------
It can be resolved by adding a simple check inside Dancer::Template::Abstract::apply_renderer() :
--------- @@ -73,9 +73,13 @@ sub apply_renderer {
($tokens, undef) = _prepare_tokens_options($tokens);
+ my $is_error_template + = $view eq Dancer::Config::setting('error_template') ? 1 : 0; + $view = $self->view($view);
- Dancer::Factory::Hook->execute_hooks('before_template_render', $tokens); + Dancer::Factory::Hook->execute_hooks('before_template_render', $tokens) + unless $is_error_template; ---------
Is it worth making a PR for this?
-- Alex