我正在部署我的软件(第一次在新环境中),并且几乎立即就在墙上。
我有一个未通过HashRef验证的值,但我能想到的每个测试都会让它看起来有效。
Attribute(store)不传递类型约束,因为:'HashRef'的验证失败,值为MyApp :: CatalystAuthStore = HASH(0x7fa98fffa590)......
转储该值会产生有效的hashref:
bless( {
'config' => {
'class' => '+MyApp::CatalystAuthStore',
'use_userdata_from_session' => 1
}
}, 'MyApp::CatalystAuthStore' )
当我尝试使用Scalar :: Util :: Reftype进行自我验证时,它会为我的值返回'HASH'。
因此,如果暂时我们可以排除我的代码问题,并考虑到这是第一次在部署时出现,有什么好方法可以看到Moose的哪个部分在我的代码上无法正常工作建?
谢谢!
答案 0 :(得分:3)
HashRef
专门寻找一个未经处理的哈希,但是你的是有福的(MyApp :: CatalystAuthStore对象)。也许MyApp::CatalystAuthStore
会更适合使用?如果没有,您可以轻松创建一个接受祝福和未祝福哈希的类型。
subtype 'AnyHashRef'
=> as 'Defined'
=> where { Scalar::Util::reftype($_) eq 'HASH' }
=> inline_as { "( Scalar::Util::reftype($_[1]) eq 'HASH' )" };