[Catalyst] Catalyst::View::TT - strange caching annoyance

Einon einon at animehq.hu
Wed Sep 13 17:14:48 CEST 2006


Hi!

I found an interesting bug in Catalyst::View::TT. Catalyst caches wrong 
templates even if I do not use caching.

I created a fresh application with catalyst.pl, added some templates,
modified the MyApp.pm according to my needs, and finally I added a TT view.

After fireing up the application with './script/myapp_server.pl -d' I 
checked if it works. It did. Then I modified the Display.hu.tt template 
to get a syntax error (I did this with removing the [% END %] block of 
the IF conditon.

When I called the default handler again, of course I got error:
---
[error] Coldn't render template "file error - parse error - 
Display.hu.tt line 9: unexpected end of input"
---
After this I put back the [% END %] block and reloaded the page,
catalyst sent me an another message:
---
[error] Coldn't render template "file error - setup: not found"
--
After restarting the cat app, the same template works again.

Sorry for this kind of bugreport... :)



Bye!
	Einon



Commands to reproduce this:
--------------------
catalyst.pl MyApp; cd MyApp
mkdir root/master
mkdir root/include
cat >root/Display.hu.tt <<EOF
[% INCLUDE master/popup.hu.tt %]

[% BLOCK default %]
  [% INCLUDE calendar %]
  This here is the default with an IF statement<br>
  [% IF 1 == 1 %]Works[% END %]
[% END %]

[% BLOCK setup %][% END %]
EOF
cat >root/master/popup.hu.tt <<EOF
[% INCLUDE include/common.inc %][% PROCESS include/common.inc %]
[% INCLUDE setup rows=5 %][% PROCESS setup %]
[% INCLUDE default %]
EOF

cat >root/include/common.inc <<EOF
[% BLOCK calendar_init %][% END %]
[% BLOCK linker_search %][% END %]
[% BLOCK calendar %][% END %]
EOF

cat >lib/MyApp.pm <<EOF
package MyApp;

use Catalyst::Runtime '5.70';
use Catalyst qw/-Debug ConfigLoader Static::Simple DefaultEnd/;
__PACKAGE__->setup;

sub default : Private {
   shift; # sorry cat command swallows dollar sign :)
   shift->stash->{template} = 'Display.hu.tt';
}

1;
EOF

cat >lib/MyApp/View/TT.pm <<EOF
package MyApp::View::TT;

use strict;
use base 'Catalyst::View::TT';

1;

EOF
rm lib/MyApp/Controller/Root.pm
./script/myapp_server.pl -d



More information about the Catalyst mailing list