1

私は自分のソフトウェアを(新しい環境で初めて)展開し、ほとんどすぐに壁にぶつかっています。

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 に答える