我试图为每种资源类型获取多个模型,以共享一个为Catalyst :: Model :: REST扩展类登录的主要资源。
MyApp :: Model :: Game(Moose强制执行主机名,用户名,密码所需的属性) MyApp的::型号::游戏::账户 MyApp的::型号::游戏::字符
:: 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'创建另一个条目。和'模型::游戏::角色'分别作为解决方法。
如果我以错误的方式分享包之间的配置,
答案 0 :(得分:1)
查看Catalyst::Component的文档,其中包含:
组件的配置哈希与该组件的应用程序上的任何配置条目合并,并传递给new()......
这是一个非常有用的功能!这基本上意味着您可以从config选项中填充类中的任何属性。
在这种情况下,您可以为从Catalyst :: Model :: REST派生的所有模型创建单个基类,并在该类的属性中设置凭据。但是,这不允许您将凭据放入外部配置文件。
MyApp::ModelBase::REST;
use Moose;
extends 'Catalyst::Model::REST';
has '+username' => (default => 'username');
MyApp::Model::Game;
use Moose;
extends 'MyApp::ModelBase::REST';
不幸的是,我想到用外部配置文件实现这一点的唯一方法就是复制数据,除非你使用Perl文件作为配置,在这种情况下你可以定义变量并在配置中重用它们。