我正在尝试让我运行一个旧项目,但我遇到了我们为 TheSchwartz 提供的模型的问题。该代码看起来与我在网上找到的执行类似操作的一堆其他示例完全相同。代码也很简单;
package MyApp::Model::TheSchwartz;
use Moose;
use namespace::autoclean;
extends 'Catalyst::Model::Adaptor';
__PACKAGE__->config( class => "TheSchwartz" );
sub mangle_arguments
{
  my ($self, $args) = @_;
  if($args->{databases})
  {
    if(ref($args->{databases}) eq 'HASH')
    {
      my %db = %{ $args->{databases} };
      $args->{databases} = [ \%db ];
    }
  }
  return %{ $args }
}
1;
我得到的错误是
Couldn't instantiate component "MyApp::Model::TheSchwartz", "unknown options args, catalyst_component_name, class at /usr/local/share/perl/5.14.2/Catalyst/Model/Adaptor/Base.pm line 27."Compilation failed in require at /usr/local/share/perl/5.14.2/Module/Runtime.pm line 317.
 at /usr/local/share/perl/5.14.2/Catalyst/Script/Server.pm line 242.
我试过删除 mangle_arguments 函数,我试过删除 Moose 用法并改用“use base”。我总是以同样的错误告终,而且我真的很难理解错误信息。我在代码中的任何地方都没有看到catalyst_component_name 定义,所以它必须从Catalyst::Model::Adaptor 传递下来,但是.. 为什么它不起作用?
编辑:
这是相关的配置部分:
<Model::TheSchwartz>
    <args>
        verbose 1
        <databases>
            dsn     dbi:mysql:host=db.vpn;dbname=theschwartz
            user    user
            pass    password
        </databases>
    </args>
</Model::TheSchwartz>