X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FBase.pm;h=6c6a9a73c78bdc99313314e7c51fd4b76e7835a0;hb=e94ccbea965501f951f77e650f5b0e589a967112;hp=48b6cd5013228e3a0d71f26d135c78e453a49be8;hpb=659817cfc6f8f5dfa8dfcfa2992679d745294e3e;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 48b6cd5..6c6a9a7 100644 --- a/lib/DBIx/Class/Schema/Loader/Base.pm +++ b/lib/DBIx/Class/Schema/Loader/Base.pm @@ -25,7 +25,7 @@ use DBIx::Class (); use Class::Load 'load_class'; use namespace::clean; -our $VERSION = '0.07003'; +our $VERSION = '0.07006'; __PACKAGE__->mk_group_ro_accessors('simple', qw/ schema @@ -89,6 +89,7 @@ __PACKAGE__->mk_group_accessors('simple', qw/ rel_collision_map real_dump_directory datetime_undef_if_invalid + _result_class_methods /); =head1 NAME @@ -1576,33 +1577,32 @@ sub _make_src_class { $self->_inject($table_class, @{$self->additional_base_classes}); } -{ - my %result_methods; - - sub _is_result_class_method { - my ($self, $name) = @_; +sub _is_result_class_method { + my ($self, $name) = @_; - %result_methods || do { - my @methods; - my $base = $self->result_base_class || 'DBIx::Class::Core'; - my @components = map { /^\+/ ? substr($_,1) : "DBIx::Class::$_" } @{ $self->components || [] }; + 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 || [] }; - for my $class ($base, @components, $self->use_moose ? 'Moose::Object' : ()) { - load_class $class; + for my $class ($base, @components, $self->use_moose ? 'Moose::Object' : ()) { + load_class $class; - push @methods, @{ Class::Inspector->methods($class) || [] }; - } + push @methods, @{ Class::Inspector->methods($class) || [] }; + } - push @methods, @{ Class::Inspector->methods('UNIVERSAL') }; + push @methods, @{ Class::Inspector->methods('UNIVERSAL') }; - @result_methods{@methods} = (); + @methods{@methods} = (); - # futureproof meta - $result_methods{meta} = undef; - }; + # futureproof meta + $methods{meta} = undef; - return exists $result_methods{$name}; + $self->_result_class_methods(\%methods); } + my $result_methods = $self->_result_class_methods; + + return exists $result_methods->{$name}; } sub _resolve_col_accessor_collisions {