2012-10-12 20 views
6

Sto cercando di far funzionare Template Toolkit come renderer predefinito in Mojolicious :: Lite. Quello che ho:Mojolicious :: Lite con 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; 

Quando provo a colpire il server di prova, ottengo:

[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. 

Questo accade indipendentemente da ciò che mi passa come parametri 'rendere'. Non riesco a capire come ottenere da questo alcuna utile informazione di debug; ma non ho mai usato Mojo prima.

Ho confermato inserendo alcune istruzioni in cui viene chiamato il gestore get.

+0

"TMPL_ROOT" significava "INCLUDE_PATH"? 'Template :: Toolkit' non esegue il rendering di qualcosa se non riesce a trovare il modello. – RobEarl

+0

Ack, sì, non so da dove provenga 'TMPL_ROOT'. (È venerdì). Comunque vedo ancora lo stesso comportamento. :( – friedo

risposta

8

Dopo aver visto lo source di Mojolicious::Plugin::TtRenderer::Engine, l'ho capito. Il plug-in ignora l'opzione INCLUDE_PATH passata a Template Toolkit e ottiene invece il percorso da $app->renderer_paths. Quindi aggiornando il mio codice per includere:

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

funziona.

Problemi correlati