X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FBase.pm;h=fd48d40f4da0c895299268c66353218251030806;hb=7eff9ea321fc3cfbeec4f27fdfc2e91f5b4e59d0;hp=2d9cc7dde88e717b15cd436122e8544377988946;hpb=8d65c820c75aa98d34c0b884596ff1b571008b86;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/Base.pm b/lib/DBIx/Class/Schema/Loader/Base.pm index 2d9cc7d..fd48d40 100644 --- a/lib/DBIx/Class/Schema/Loader/Base.pm +++ b/lib/DBIx/Class/Schema/Loader/Base.pm @@ -22,10 +22,9 @@ use DBIx::Class::Schema::Loader::Utils qw/split_name dumper_squashed eval_withou use DBIx::Class::Schema::Loader::Optional::Dependencies (); use Try::Tiny; use DBIx::Class (); -use Class::Load 'load_class'; use namespace::clean; -our $VERSION = '0.07009'; +our $VERSION = '0.07010'; __PACKAGE__->mk_group_ro_accessors('simple', qw/ schema @@ -621,6 +620,9 @@ sub new { } $self->result_component_map(\%rc_map); } + else { + $self->result_component_map({}); + } $self->_validate_result_component_map; if ($self->use_moose) { @@ -1068,7 +1070,7 @@ sub _relbuilder { ->{ $self->naming->{relationships}}; my $relbuilder_class = 'DBIx::Class::Schema::Loader::RelBuilder'.$relbuilder_suff; - load_class $relbuilder_class; + $self->ensure_class_loaded($relbuilder_class); $relbuilder_class->new( $self ); }; @@ -1620,10 +1622,10 @@ sub _make_src_class { $self->_inject($table_class, @{$self->left_base_classes}); my @components = @{ $self->components || [] }; - foreach my $moniker (keys %{ $self->result_component_map || {} }) { - next unless $moniker eq $table_moniker; - push @components, @{ $self->result_component_map->{$moniker} }; - } + + push @components, @{ $self->result_component_map->{$table_moniker} } + if exists $self->result_component_map->{$table_moniker}; + $self->_dbic_stmt($table_class, 'load_components', @components) if @components; $self->_inject($table_class, @{$self->additional_base_classes}); @@ -1637,14 +1639,18 @@ sub _is_result_class_method { if (not $self->_result_class_methods) { my (@methods, %methods); my $base = $self->result_base_class || 'DBIx::Class::Core'; - my @components = map { /^\+/ ? substr($_,1) : "DBIx::Class::$_" } @{ $self->components || [] }; - foreach my $moniker (keys %{ $self->result_component_map || {} }) { - next unless $moniker eq $table_moniker; - push @components, @{ $self->result_component_map->{$moniker} }; + + my @components = @{ $self->components || [] }; + + push @components, @{ $self->result_component_map->{$table_moniker} } + if exists $self->result_component_map->{$table_moniker}; + + for my $c (@components) { + $c = $c =~ /^\+/ ? substr($c,1) : "DBIx::Class::$c"; } for my $class ($base, @components, $self->use_moose ? 'Moose::Object' : ()) { - load_class $class; + $self->ensure_class_loaded($class); push @methods, @{ Class::Inspector->methods($class) || [] }; } @@ -1653,9 +1659,6 @@ sub _is_result_class_method { @methods{@methods} = (); - # futureproof meta - $methods{meta} = undef; - $self->_result_class_methods(\%methods); } my $result_methods = $self->_result_class_methods;