Re: [BUG] translated fragments get cached in last accessed language

Bruno Postle <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.petal
Message-ID <[email protected]>
On Thu 10-Mar-2005 at 18:00 +0000, Bruno Postle wrote:

> This is a Petal bug.  Basically if I enable the Petal cache and do 
> something like this:
>
>   my $a = new Petal (file => 'foo', base_dir => 'bar', language => 'en');
>      $a = new Petal (file => 'foo', base_dir => 'bar', language => 'fr');
>
> ..Petal continues to use 'en' templates.

The problem was that Petal hard-codes paths and languages for 
included templates in the cached code - Whichever language the 
template was using when it was first-run is the language that gets 
used from then-on.

The attached patch fixes this by stirring the 'language' into the 
hash key used to store and retrieve the cached code.  I would 
appreciate it if somebody could look-over it before I commit and 
release.

-- 
Bruno
Petal_lang-includes.patch (text/plain, 3.2 KB)
Index: lib/Petal.pm
===================================================================
RCS file: /var/spool/cvs/Petal/lib/Petal.pm,v
retrieving revision 1.126
diff -r1.126 Petal.pm
609c609
<     my $code = (defined $DISK_CACHE and $DISK_CACHE) ? Petal::Cache::Disk->get ($self->_file_path_with_macro) : undef;
---
>     my $code = (defined $DISK_CACHE and $DISK_CACHE) ? Petal::Cache::Disk->get ($self->_file_path_with_macro, $self->language) : undef;
620c620
< 	Petal::Cache::Disk->set ($self->_file_path_with_macro, $code) if (defined $DISK_CACHE and $DISK_CACHE);
---
> 	Petal::Cache::Disk->set ($self->_file_path_with_macro, $code, $self->language) if (defined $DISK_CACHE and $DISK_CACHE);
633c633
<     my $code = (defined $MEMORY_CACHE and $MEMORY_CACHE) ? Petal::Cache::Memory->get ($self->_file_path_with_macro) : undef;
---
>     my $code = (defined $MEMORY_CACHE and $MEMORY_CACHE) ? Petal::Cache::Memory->get ($self->_file_path_with_macro, $self->language) : undef;
659c659
< 	Petal::Cache::Memory->set ($self->_file_path_with_macro, $code) if (defined $MEMORY_CACHE and $MEMORY_CACHE);	
---
> 	Petal::Cache::Memory->set ($self->_file_path_with_macro, $code, $self->language) if (defined $MEMORY_CACHE and $MEMORY_CACHE);	
Index: lib/Petal/Cache/Disk.pm
===================================================================
RCS file: /var/spool/cvs/Petal/lib/Petal/Cache/Disk.pm,v
retrieving revision 1.16
diff -r1.16 Disk.pm
43c43,44
<     my $key   = $class->compute_key ($file);
---
>     my $lang  = shift || '';
>     my $key   = $class->compute_key ($file, $lang);
57c58,59
<     my $key   = $class->compute_key ($file);
---
>     my $lang  = shift || '';
>     my $key   = $class->compute_key ($file, $lang);
81a84
>     my $lang  = shift || '';
83c86
<     my $key = $class->compute_key ($file);
---
>     my $key = $class->compute_key ($file, $lang);
102a106
>     my $lang = shift || '';
104c108
<     my $key = md5_hex ($file . ";INPUT=" . $Petal::INPUT . ";OUTPUT=" . $Petal::OUTPUT);
---
>     my $key = md5_hex ($file . ";$lang" . ";INPUT=" . $Petal::INPUT . ";OUTPUT=" . $Petal::OUTPUT);
118c122,123
<     my $key = $class->compute_key ($file);
---
>     my $lang = shift || '';
>     my $key = $class->compute_key ($file, $lang);
Index: lib/Petal/Cache/Memory.pm
===================================================================
RCS file: /var/spool/cvs/Petal/lib/Petal/Cache/Memory.pm,v
retrieving revision 1.6
diff -r1.6 Memory.pm
33d32
<     my $key = $class->compute_key ($file);
34a34,35
>     my $lang  = shift || '';
>     my $key = $class->compute_key ($file, $lang);
47d47
<     my $key = $class->compute_key ($file);
48a49,50
>     my $lang  = shift || '';
>     my $key = $class->compute_key ($file, $lang);
61c63,64
<     my $key = $class->compute_key ($file);
---
>     my $lang  = shift || '';
>     my $key = $class->compute_key ($file, $lang);
78c81,82
<     my $key = $class->compute_key ($file);
---
>     my $lang = shift || '';
>     my $key = $class->compute_key ($file, $lang);
104a109
>     my $lang = shift || '';
106c111
<     my $key = $file . ";INPUT=" . $Petal::INPUT . ";OUTPUT=" . $Petal::OUTPUT;
---
>     my $key = $file . ";$lang" . ";INPUT=" . $Petal::INPUT . ";OUTPUT=" . $Petal::OUTPUT;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.