我正在部署我的软件(第一次在一个新的环境中),并几乎立即碰壁。
我有一个值无法通过它的HashRef验证,但是我能想到的每一个测试都使它看起来应该是有效的。
属性(存储)没有传递类型约束,因为:值MyApp::CatalystAuthStore=HASH(0x7fa98fffa590)...的“HashRef”验证失败
转储该值会产生一个有效的hashref:
bless( {
'config' => {
'class' => '+MyApp::CatalystAuthStore',
'use_userdata_from_session' => 1
}
}, 'MyApp::CatalystAuthStore' )当我尝试使用Scalar::Util::Reftype进行自我验证时,它会返回我的值的“散列”。
因此,如果有一段时间,我们可以排除我的代码中的一个问题,并且考虑到这是第一次发生在部署中,那么有什么好的方法来查看Moose的哪一部分在我的构建中不能正常工作呢?
谢谢!
发布于 2012-11-30 23:48:18
HashRef专门查找一个未加祝福的散列,但您的哈希是有福的(一个MyApp::CatalystAuthStore对象)。也许MyApp::CatalystAuthStore会是一种更适合使用的类型?如果不是,您可以很容易地创建一个类型,接受祝福和不祝福的哈希。
subtype 'AnyHashRef'
=> as 'Defined'
=> where { Scalar::Util::reftype($_) eq 'HASH' }
=> inline_as { "( Scalar::Util::reftype($_[1]) eq 'HASH' )" };https://stackoverflow.com/questions/13654574
复制相似问题