読者です 読者をやめる 読者になる 読者になる

パルカワ2

PerlとRubyとイチャラブ

ArkのActionClassでアトリビュート増やそうとしてハマった事

オレオレアトリビュート増やしちゃうみたいなの、よくする。
やりすぎはよくないとは思いつつも、やってしまう。麻薬だ。

こういう感じのコード書いて、forwardさせてちゃんとエラーが出るかみたいなテスト書いてたら、なぜか200が返ってきた。

package MyApp::ActionClass::API;
use utf8;
use Mouse::Role;

around ACTION => sub {
    my $next = shift;
    my ($self, $action, $c, @args) = @_;
    if ($action->attributes->{AuthRequired}[0]) {
        ...;

        my $result    = models('...')->get(...) || {};
        my $player_id = $result->{player_id};
        if (!$player_id) {
            $c->forward( # ここでエラーが出るはず!!
                '/api/error_with_messages',
                ["invalid session"], 400,
            );
            return;
        }

        ...;
    }

    $next->(@_);
};

no Mouse::Role;

sub _parse_AuthRequired_attr {
    return AuthRequired => 1;
}

1;
# テスト
my $req = POST("/test/action_class/api/sig",
    Content => [
        session => $session,
    ],
);

my ($content, $c) = ctx_request($req);
use Data::Dumper;warn Dumper $c->res;
warn $content;

# 結果
[13:37:15] t/action_class/api.t .. $VAR1 = bless( {
        'status' => 200,
        'binary' => 0
        }, 'Ark::Response' );
HTTP::Response=HASH(0x7fe9550982c0) at t/action_class/api.t line 48. 

エラーが出てない。どういう事だ。
悩みまくった結果、MyApp::ActionClass::APIでuse MyApp::Models;してないだけだった。つらかった。