X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema.pm;h=65c235c2cb2d3a09fbcc40a437c2d0eb9624e5f1;hb=e6efde04063f1374151f9f76ef1e7c23a045e91e;hp=4e3e62ca90f446e1f5d6a23eeb5fcdef8b794741;hpb=a50bcd525c06439979625b1741730f74aa3548af;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Schema.pm b/lib/DBIx/Class/Schema.pm index 4e3e62c..65c235c 100644 --- a/lib/DBIx/Class/Schema.pm +++ b/lib/DBIx/Class/Schema.pm @@ -196,17 +196,27 @@ sub load_classes { $comps_for{$class} = \@comp; } - foreach my $prefix (keys %comps_for) { - foreach my $comp (@{$comps_for{$prefix}||[]}) { - my $comp_class = "${prefix}::${comp}"; - eval "use $comp_class"; # If it fails, assume the user fixed it - if ($@) { - die $@ unless $@ =~ /Can't locate/; + my @to_register; + { + no warnings qw/redefine/; + local *Class::C3::reinitialize = sub { }; + foreach my $prefix (keys %comps_for) { + foreach my $comp (@{$comps_for{$prefix}||[]}) { + my $comp_class = "${prefix}::${comp}"; + eval "use $comp_class"; # If it fails, assume the user fixed it + if ($@) { + die $@ unless $@ =~ /Can't locate/; + } + push(@to_register, [ $comp, $comp_class ]); } - $class->register_class($comp => $comp_class); - # if $class->can('result_source_instance'); } } + Class::C3->reinitialize; + + foreach my $to (@to_register) { + $class->register_class(@$to); + # if $class->can('result_source_instance'); + } } =head2 compose_connection