2012-10-12 19 views
6

Ich versuche, Template Toolkit als Standard-Renderer in Mojolicious :: Lite zu bekommen. Was ich habe:Mojolicious :: Lite mit Template Toolkit

use strict; 
use warnings; 

use Mojolicious::Lite; 
use Mojolicious::Plugin::TtRenderer; 
plugin tt_renderer => { template_options => { INCLUDE_PATH => './tmpl', DEBUG => 1 } }; 

get '/' => sub { 
    my $self = shift; 

    $self->render('index'); 
}; 

app->renderer->default_handler('tt'); 
app->start; 

Wenn ich versuche, den Test-Server zu treffen, die ich erhalten:

[Fri Oct 12 14:02:02 2012] [info] Listening at "http://*:3000". 
Server available at http://127.0.0.1:3000. 
[Fri Oct 12 14:02:08 2012] [debug] Your secret passphrase needs to be changed!!! 
[Fri Oct 12 14:02:08 2012] [debug] GET/(Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:16.0) Gecko/20100101 Firefox/16.0). 
[Fri Oct 12 14:02:08 2012] [debug] Routing to a callback. 
[Fri Oct 12 14:02:08 2012] [debug] Nothing has been rendered, expecting delayed response. 

Dies geschieht unabhängig davon, was ich übergeben als Parameter zu ‚machen‘. Ich kann mir nicht vorstellen, wie man daraus nützliche Debugging-Informationen bekommt; aber ich habe Mojo vorher noch nicht benutzt.

Ich habe durch das Streuen in einigen warn Aussagen bestätigt, dass mein get Handler aufgerufen wird.

+0

War 'TMPL_ROOT' eigentlich' INCLUDE_PATH'? 'Template :: Toolkit' zeigt nichts an, wenn es die Vorlage nicht finden kann. – RobEarl

+0

Ack, yeah, nicht sicher wo "TMPL_ROOT" herkam. (Es ist Freitag.) Ich sehe immer noch das gleiche Verhalten. :( – friedo

Antwort

8

Nach dem Blick auf die source von Mojolicious::Plugin::TtRenderer::Engine, habe ich es herausgefunden. Das Plugin ignoriert die an Template Toolkit übergebene INCLUDE_PATH Option und erhält stattdessen den Pfad von $app->renderer_paths. So aktualisieren meinen Code zu enthalten:

app->renderer->default_handler('tt'); 
app->renderer->paths([ './tmpl' ]); 

macht es funktioniert.