__PACKAGE__->mk_group_accessors( component_class => 'schema_sanity_checker' );
__PACKAGE__->schema_sanity_checker(
- DBIx::Class::_ENV_::OLD_MRO ? false :
'DBIx::Class::Schema::SanityChecker'
);
$storage->connect_info(\@info);
$self->storage($storage);
-
-###
-### Begin 5.8 "you have not selected a checker" warning
-###
- # We can not blanket-enable this on 5.8 - it is just too expensive for
- # day to day execution. We also can't just go silent - there are genuine
- # regressions ( due to core changes) for which this is the only line of
- # defense. So instead we whine on STDERR that folks need to do something
- #
- # Beyond suboptimal, but given the constraints the best we can do :(
- #
- # This should stay around for at least 3~4 years
- #
- DBIx::Class::_ENV_::OLD_MRO
- and
- ! $default_off_stderr_blurb_emitted
- and
- length ref $self->schema_sanity_checker
- and
- length ref __PACKAGE__->schema_sanity_checker
- and
- (
- refaddr( $self->schema_sanity_checker )
- ==
- refaddr( __PACKAGE__->schema_sanity_checker )
- )
- and
- emit_loud_diag(
- msg => sprintf(
- "Sanity checks for schema %s are disabled on this perl $]: "
- . '*THIS IS POTENTIALLY VERY DANGEROUS*. You are strongly urged to '
- . "read http://is.gd/dbic_sancheck_5_008 before proceeding\n",
- ( defined( blessed $self ) ? refdesc $self : "'$self'" )
- ))
- and
- $default_off_stderr_blurb_emitted = 1;
-###
-### End 5.8 "you have not selected a checker" warning
-###
-
-
if( my $checker = $self->schema_sanity_checker ) {
$checker->perform_schema_sanity_checks($self);
}
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