findの後にif (!$row) { } みたいなの書きまくってて、腱鞘炎になりそうという問題があった。
package MyApp::Schema; ...; use parent "DBIx::Class::Schema"; __PACKAGE__->load_namespaces( default_resultset_class => "ResultSet", ); 1; package MyApp::Schema::ResultSet; use parent "DBIx::Class::ResultSet"; use MyApp::Exception; sub find { my $self = shift; my $row = $self->SUPER::find(@_); if (not defined $row) { # ここのファイル名とか行数が出ても意味がない my ($package, $filename, $line) = caller(); die MyApp::Exception::DB::ResultNotFound->new( package => $package, file => $filename, line => $line, ); } return $row; }
という感じでやると便利でテンション上がると思ったが、update_or_createで死ぬという悲しい現実にぶち当たったので帰りたい。