1

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

我有一个未通过 HashRef 验证的值,但是我能想到的每个测试都使它看起来应该是有效的。

属性(存储)没有通过类型约束,因为: 'HashRef' 的验证失败,值为 MyApp::CatalystAuthStore=HASH(0x7fa98fffa590)...

转储该值会产生一个看起来有效的 hashref:

bless( {
     'config' => {
                   'class' => '+MyApp::CatalystAuthStore',
                   'use_userdata_from_session' => 1
                 }
   }, 'MyApp::CatalystAuthStore' )

当我尝试使用 Scalar::Util::Reftype 进行自我验证时,它会为我的值返回“HASH”。

因此,如果有片刻,我们可以排除我的代码存在的问题,并且考虑到这是第一次在部署时发生,那么有什么好方法可以查看 Moose 的哪些部分在我的构建中无法正常工作?

谢谢!

4

1 回答 1

3

HashRef专门寻找未受祝福的哈希,但您的已受祝福(MyApp::CatalystAuthStore 对象)。也许MyApp::CatalystAuthStore会是更合适的类型?如果没有,您可以轻松创建一个同时接受祝福和未祝福哈希的类型。

subtype 'AnyHashRef'
   => as 'Defined'
   => where { Scalar::Util::reftype($_) eq 'HASH' }
   => inline_as { "( Scalar::Util::reftype($_[1]) eq 'HASH' )" };
于 2012-11-30T23:48:18.400 回答