diff --git a/lib/Mojolicious/Plugin/TtRenderer/Engine.pm b/lib/Mojolicious/Plugin/TtRenderer/Engine.pm index 2e63122..035b8b6 100644 --- a/lib/Mojolicious/Plugin/TtRenderer/Engine.pm +++ b/lib/Mojolicious/Plugin/TtRenderer/Engine.pm @@ -12,6 +12,7 @@ use Mojo::ByteStream 'b'; use Template (); use Cwd qw/abs_path/; use Scalar::Util 'weaken'; +use POSIX ':errno_h'; __PACKAGE__->attr('tt'); @@ -87,11 +88,26 @@ sub _render { my $provider = $self->tt->{SERVICE}->{CONTEXT}->{LOAD_TEMPLATES}->[0]; $provider->options($options); $provider->ctx($c); - $provider->not_found(0); - my $ok = $self->tt->process(defined $inline ? \$inline : $t, @params); + my $ok = do { + if (defined $inline) { + $self->tt->process(\$inline, @params); + } + else { + my @ret = $provider->fetch($t); - return 0 if $provider->not_found; + if (not defined $ret[1]) { + $self->tt->process($ret[0], @params); + } + elsif (not defined $ret[0]) { # not found + return 0; + } + else { # error + return 0 if $! == ENOENT && (not ref $ret[0]); # not found when not blessed exception + die $ret[0]; + } + } + }; # Error die $self->tt->error unless $ok;