我正在尝试为每种资源类型获取多个模型,以共享一个主要资源,该主要资源确实登录了Catalyst :: Model :: REST扩展类。
MyApp :: Model :: Game(麋鹿强制执行的主机名,用户名,密码的必需属性)MyApp :: Model :: Game :: AccountMyApp :: Model :: Game :: Character
:: Account和::: Character都扩展了MyApp :: Model :: Game,Game在MyApp / lib / MyApp.pm中定义了它自己的程序包配置:
__PACKAGE__->config(
name => 'PowerGame',
'Model::Game' => {
hostname => "Somehostname.com",
username => "username",
password => "Hax0rs",
}
}
我无法找到有关允许Model :: Game :: Account和Model :: Game :: Character使用与Model :: Game相同的应用程序配置的文档,因为我具有必需的属性,因此该应用程序无法启动声称我尚未分配必填属性。
我目前正分别为'Model :: Game :: Account'和'Model :: Game :: Character'创建另一个条目作为解决方法。
如果我打算用这种错误的方式在软件包之间共享配置,
看看Catalyst::Component的文档,它说:
组件的配置哈希与该组件在应用程序上的任何配置条目合并,并传递给new()...
这是非常有用的功能!这基本上意味着您可以从config选项中填充类中的任何属性。
在这种情况下,您可以为所有从Catalyst :: Model :: REST派生的模型创建单个基类,并在该类的属性中设置凭据。但是,这将不允许您将凭据放入外部配置文件。
package MyApp::ModelBase::REST;
use Moose;
extends 'Catalyst::Model::REST';
has '+username' => (default => 'username');
package MyApp::Model::Game;
use Moose;
extends 'MyApp::ModelBase::REST';
不幸的是,我想通过外部配置文件实现此目标的唯一方法是复制数据,除非您将Perl文件用作您的配置,在这种情况下,您可以定义变量并在配置中重新使用它们。