describe_class_methods emit_loud_diag
);
use DBIx::Class ();
-use DBIx::Class::Exception ();
use Scalar::Util qw( blessed refaddr );
use namespace::clean;
package MyApp::Schema;
use base 'DBIx::Class::Schema';
- # this is the default on Perl v5.10 and later
+ # this is the default setting
__PACKAGE__->schema_sanity_checker('DBIx::Class::Schema::SanityChecker');
...
This is the default implementation of the Schema and related classes
L<validation framework|DBIx::Class::Schema/schema_sanity_checker>.
-The validator is B<enabled by default> on perls C<v5.10> and above. See
-L</Performance considerations> for discussion of the runtime effects.
+The validator is B<enabled by default>. See L</Performance considerations>
+for discussion of the runtime effects.
Use of this class begins by invoking L</perform_schema_sanity_checks>
(usually via L<DBIx::Class::Schema/connection>), which in turn starts
L<Class::C3::XS> available, without them the slowdown reaches the whopping
C<350%>).
-Therefore, on these versions of perl the sanity checks are B<not enabled> by
-default. Instead a C<false> placeholder value is inserted into the
-L<schema_sanity_checker attribute|DBIx::Class::Schema/schema_sanity_checker>,
-urging the user to decide for themselves how to proceed.
-
It is the author's B<strongest> recommendation to find a way to run the
checks on your codebase continuously, even if it takes much longer. Refer to
the last paragraph of L</Performance considerations> above for an example how
. "chain of calls within the convenience shortcut as seen when running:\n "
. '~$ perl -M%2$s -MDevel::Dwarn -e "Ddie { %3$s => %2$s->can(q(%3$s)) }"',
join (', ', map { "$_()" } sort @{ $_->{by} } ),
- $_->{overriden}{via_class},
- $_->{overriden}{name},
+ $_->{overridden}{via_class},
+ $_->{overridden}{name},
)} @{ $_[1] } ]
}
for (@$method_stack) {
push @$nonsugar_methods, $_ and next
- unless $_->{attributes}{DBIC_method_is_indirect_sugar};
+ unless(
+ $_->{attributes}{DBIC_method_is_indirect_sugar}
+ or
+ $_->{attributes}{DBIC_method_is_generated_from_resultsource_metadata}
+ );
push @err, {
- overriden => {
+ overridden => {
name => $_->{name},
- via_class => $_->{via_class}
+ via_class => (
+ # this way we report a much better Dwarn oneliner in the error
+ $_->{attributes}{DBIC_method_is_bypassable_resultsource_proxy}
+ ? 'DBIx::Class::ResultSource'
+ : $_->{via_class}
+ ),
},
by => [ map { "$_->{via_class}::$_->{name}" } @$nonsugar_methods ],
} if (
push @err, {
class => $class,
- isa => $desc->{isa},
+ initial_linear_isa => $desc->{linear_isa},
+ current_linear_isa => do { (undef, my @isa) = @{ mro::get_linear_isa($class) }; \@isa },
initial_mro => $desc->{mro}{type},
current_mro => mro::get_mro($class),
affected_methods => $affected_methods,