有效Hashref的验证失败

时间:2012-11-30 23:16:17

标签: perl moose hashref moosex-types

我正在部署我的软件(第一次在新环境中),并且几乎立即就在墙上。

我有一个未通过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的哪个部分在我的代码上无法正常工作建?

谢谢!

1 个答案:

答案 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' )" };