2012-10-12 48 views
6

Estoy intentando que Template Toolkit funcione como el renderizador predeterminado en Mojolicious :: Lite. Lo que tengo:Mojolicious :: Lite with 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; 

Cuando trato de golpear el servidor de prueba, me sale:

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

Esto sucede independientemente de lo que me pase como parámetros a 'hacer'. Parece que no puedo encontrar la manera de obtener información de depuración útil de esto; pero no he usado Mojo antes.

He confirmado rociando en algunas declaraciones warn que mi controlador get se está llamando.

+0

¿Se suponía que 'TMPL_ROOT' sería' INCLUDE_PATH'? 'Template :: Toolkit' no representa nada si no puede encontrar la plantilla. – RobEarl

+0

Ack, sí, no estoy seguro de dónde viene 'TMPL_ROOT'. (Es viernes.) Todavía sigo viendo el mismo comportamiento. :( – friedo

Respuesta

8

Después de mirar el source de Mojolicious::Plugin::TtRenderer::Engine, lo descubrí. El complemento ignora la opción INCLUDE_PATH pasada a Template Toolkit, y en su lugar obtiene la ruta desde $app->renderer_paths. Así que la actualización de mi código para incluir:

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

lo hace funcionar.

Cuestiones relacionadas