从Catalyst :: Plugin :: Cache :: FileCache升级到Catalyst :: Plugin :: Cache

时间:2011-12-27 18:13:11

标签: perl caching catalyst

我正在编写构建脚本来构建Catalyst应用程序,显然它是一个较旧的应用程序,因为它使用Catalyst :: Plugin :: Cache :: FileCache而不是支持FileCache选项的较新的Catalyst :: Plugin :: Cache。通过Makefile.PL进行构建时,我无法使用cpanm,因为Catalyst :: Plugin :: Cache :: FileCache不再可检索。 : - (

找到做到这一点的方法虽然对我来说是个问题。

我想我可以对应用程序进行更改以使用Catalyst :: Plugin :: Cache,但我没有找到明确的文档,或者任何简单的方法。

目前该应用使用此....

__PACKAGE__->config( name => 'Stats', cache =>{storage=>'./tmp'} );

http://search.cpan.org/~mramberg/Catalyst-Plugin-Cache-FileCache-0.7/lib/Catalyst/Plugin/Cache/FileCache.pm是已弃用模块的文档。

Catalyst :: Plugin :: Cache的新文档在这里..... http://metacpan.org/pod/Catalyst::Plugin::Cache

在我的一个模特中,我有这个......

__PACKAGE__->config(
                schema_class => 'Schema::STATS',
                connect_info => [
                                 'dbi:ODBC:DSN=....;driver=...;Server=...;database=...;RB_CONFIG=...;',
                                 'USER',
                                 'PASS',
                                 {limit_dialect=>'GenericSubQ',
                                  on_connect_do => ['set dateformat ymd'],
                                  cursor_class => 'DBIx::Class::Cursor::Cached'
                                 }
                                ],
               );


sub COMPONENT {
  my $self = shift->NEXT::COMPONENT(@_);
  $self->schema->default_resultset_attributes({ cache_object => Cache::FileCache->
       new({ namespace => 'Schema::STATS' }), cache_for=>3600});
  return $self;
}

我希望尽可能少地对这个应用程序进行更改,但有人知道有什么更简单的方法来进行我需要切换到更新的Catalyst :: Plugin :: Cache吗?

更糟糕的是,我总是可以打包旧的Catalyst :: Plugin :: Cache :: FileCache源并安装它,但我希望有一种更简单的方法来使用新的。

非常感谢! 珍妮

1 个答案:

答案 0 :(得分:2)

__PACKAGE__->config(
  'Plugin::Cache' => {
    backends => {
      default => {
        class => "Cache::FileCache",
        cache_root => "./tmp",
        namespace => "Pick Something",
    }
  }
);

并删除Plugin::Cache::FileCache并添加Plugin::Cache应该可以获得大约90%的费用。 $c->cache将继续按预期工作,它将是一个香草Cache::FileCache对象。