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=7e929a3df8913c3c6dca285a7d28606e28dbf631;hpb=de89debaf038ba4afae1a3a56d03f43e9d8ca833;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader.pm b/lib/DBIx/Class/Schema/Loader.pm index 7e929a3..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 @@ -234,16 +235,35 @@ sub connection { # before connecting. require DBIx::Class::Schema::Loader::Base; my $temp_loader = DBIx::Class::Schema::Loader::Base->new( - %{ $self->_loader_args } + %{ $self->_loader_args }, + schema => $self, + naming => 'current', + 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 @@ -540,6 +560,8 @@ gugu: Andrey Kostenko jhannah: Jay Hannah +jnap: John Napiorkowski + rbuels: Robert Buels timbunce: Tim Bunce @@ -558,6 +580,8 @@ bphillips: Brian Phillips schwern: Michael G. Schwern +SineSwiper: Brendan Byrd + hobbs: Andrew Rodland domm: Thomas Klausner @@ -566,7 +590,7 @@ spb: Stephen Bennett Matias E. Fernandez -Al Newkirk +alnewkirk: Al Newkirk ... and lots of other folks. If we forgot you, please write the current maintainer or RT. @@ -582,7 +606,8 @@ the same terms as Perl itself. =head1 SEE ALSO -L, L +L, L, L, +L =cut