X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader.pm;h=ea0fe2cc7689d02f4f144097e512979a0f839a4d;hb=18eb280f9b71785a12c105299f813358faa47143;hp=5a273eded194ce7db53351d3eaf1bdac1576af0a;hpb=3bb5544fe304b62db827672ddab3435ebda14d7a;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader.pm b/lib/DBIx/Class/Schema/Loader.pm index 5a273ed..ea0fe2c 100644 --- a/lib/DBIx/Class/Schema/Loader.pm +++ b/lib/DBIx/Class/Schema/Loader.pm @@ -8,12 +8,13 @@ use mro 'c3'; use Carp::Clan qw/^DBIx::Class/; use Scalar::Util 'weaken'; use Sub::Name 'subname'; +use DBIx::Class::Schema::Loader::Utils 'array_eq'; use namespace::clean; # Always remember to do all digits for the version even if they're 0 # i.e. first release of 0.XX *must* be 0.XX000. This avoids fBSD ports # brain damage and presumably various other packaging systems too -our $VERSION = '0.07010'; +our $VERSION = '0.07018'; __PACKAGE__->mk_group_accessors('inherited', qw/ _loader_args @@ -240,13 +241,29 @@ sub connection { use_namespaces => 1, ); + my $modify_isa = 0; + my @components; + if ($temp_loader->schema_base_class || $temp_loader->schema_components) { - my @components = @{ $temp_loader->schema_components } + @components = @{ $temp_loader->schema_components } if $temp_loader->schema_components; push @components, ('+'.$temp_loader->schema_base_class) if $temp_loader->schema_base_class; + my $class_isa = do { + no strict 'refs'; + \@{"${class}::ISA"}; + }; + + my @component_classes = map { + /^\+/ ? substr($_, 1, length($_) - 1) : "DBIx::Class::$_" + } @components; + + $modify_isa++ if not array_eq([ @$class_isa[0..(@components-1)] ], \@component_classes) + } + + if ($modify_isa) { $class->load_components(@components); # This hack is necessary because we changed @ISA of $self through @@ -543,6 +560,8 @@ gugu: Andrey Kostenko jhannah: Jay Hannah +jnap: John Napiorkowski + rbuels: Robert Buels timbunce: Tim Bunce @@ -561,6 +580,8 @@ bphillips: Brian Phillips schwern: Michael G. Schwern +SineSwiper: Brendan Byrd + hobbs: Andrew Rodland domm: Thomas Klausner @@ -585,7 +606,8 @@ the same terms as Perl itself. =head1 SEE ALSO -L, L +L, L, L, +L =cut