2012-10-12 17 views
6

Próbuję uzyskać Template Toolkit do pracy jako domyślny renderer w Mojolicious :: Lite. Co mam:Mojolicious :: Lite z 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; 

Kiedy próbuję trafić serwer testowy, otrzymuję:

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

Dzieje się tak niezależnie od tego, co mam przekazać jako parametry do „czynią”. Nie potrafię wymyślić, jak uzyskać z tego przydatne informacje dotyczące debugowania; ale wcześniej nie użyłem Mojo.

Potwierdziłem, posypując w niektórych instrukcjach warn, że mój wywoływacz get jest wywoływana.

+0

Czy "TMPL_ROOT" miało oznaczać "INCLUDE_PATH"? 'Template :: Toolkit' nie renderuje niczego, jeśli nie może znaleźć szablonu. – RobEarl

+0

Ack, tak, nie wiem, skąd się wzięło 'TMPL_ROOT'. (Jest piątek.) Nadal widzę to samo zachowanie. :( – friedo

Odpowiedz

8

Po obejrzeniu source z Mojolicious::Plugin::TtRenderer::Engine, znalazłem to. Wtyczka ignoruje opcję INCLUDE_PATH przekazaną do Template Toolkit, a zamiast tego otrzymuje ścieżkę od $app->renderer_paths. Tak więc aktualizacja mojego kodu obejmuje:

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

sprawia, że ​​działa.

Powiązane problemy