パルカワ2

最近はFlutterをやっています

DBIx::Classでエラーが起きたとき、エラーが起きた場所を警告で出す。

試してみたけど、色々警告がでてめんどくさくなり考えるのをやめた。

package MyApp::Schema;
use 5.14.1;
use strict;
use warnings;
use utf8;

use parent "DBIx::Class::Schema";

__PACKAGE__->exception_action(sub {
    my $trace;
    my $i = 0;

    while ( my @caller = caller($i) ) {
        my $file = $caller[1];
        $file =~ s!\*/!*\//!g;
        $trace = "/* $file line $caller[2] */";
        if (
            $caller[0] =~ /^MyApp/         &&
            $caller[0] !~ /^MyApp::Schema/ &&
            $caller[0] !~ /^MyApp::Test/
        ) {
            last;
        }
        $i++;
    }

    warn $trace;
});


1;

DBIx::Sunny使えば苦労しない。