【问题标题】:Validation Failing for Valid HashrefValid Hashref 的验证失败
【发布时间】:2012-12-01 08:27:34
【问题描述】:

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

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

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

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

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

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

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

谢谢!

【问题讨论】:

    标签: perl moose hashref moosex-types


    【解决方案1】:

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

    subtype 'AnyHashRef'
       => as 'Defined'
       => where { Scalar::Util::reftype($_) eq 'HASH' }
       => inline_as { "( Scalar::Util::reftype($_[1]) eq 'HASH' )" };
    

    【讨论】:

    • 我可能永远无法理解为什么它在开发过程中总是在我的测试环境中工作,但你是完全正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2015-05-01
    • 2018-08-24
    • 2012-10-18
    • 2017-09-21
    • 2015-09-11
    相关资源
    最近更新 更多