X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FBase.pm;h=f714ac2d9dcf313e1f7440f9e3ebfdfe1eed83c1;hb=b8e1a9d54674d1aae149f314f95e7a0dc62995fa;hp=01f925fc864bb9b2c0b90753f3fd366aa51fe210;hpb=53e721bce0ce6df2b721c52ec331a8098e55b533;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 01f925f..f714ac2 100644 --- a/lib/DBIx/Class/Schema/Loader/Base.pm +++ b/lib/DBIx/Class/Schema/Loader/Base.pm @@ -18,13 +18,13 @@ use Class::Unload; use Class::Inspector (); use Scalar::Util 'looks_like_number'; use File::Slurp 'slurp'; -use DBIx::Class::Schema::Loader::Utils qw/split_name dumper_squashed/; +use DBIx::Class::Schema::Loader::Utils qw/split_name dumper_squashed eval_without_redefine_warnings/; use DBIx::Class::Schema::Loader::Optional::Dependencies (); use Try::Tiny; use DBIx::Class (); use namespace::clean; -our $VERSION = '0.07001'; +our $VERSION = '0.07002'; __PACKAGE__->mk_group_ro_accessors('simple', qw/ schema @@ -844,14 +844,7 @@ sub _load_external { $code = $self->_rewrite_old_classnames($code); if ($self->dynamic) { # load the class too - # kill redefined warnings - my $warn_handler = $SIG{__WARN__} || sub { warn @_ }; - local $SIG{__WARN__} = sub { - $warn_handler->(@_) - unless $_[0] =~ /^Subroutine \S+ redefined/; - }; - eval $code; - die $@ if $@; + eval_without_redefine_warnings($code); } $self->_ext_stmt($class, @@ -892,14 +885,7 @@ been used by an older version of the Loader. * PLEASE RENAME THIS CLASS: from '$old_class' to '$class', as that is the new name of the Result. EOF - # kill redefined warnings - my $warn_handler = $SIG{__WARN__} || sub { warn @_ }; - local $SIG{__WARN__} = sub { - $warn_handler->(@_) - unless $_[0] =~ /^Subroutine \S+ redefined/; - }; - eval $code; - die $@ if $@; + eval_without_redefine_warnings($code); } chomp $code; @@ -1125,12 +1111,9 @@ sub _reload_class { delete $INC{ $class_path }; # kill redefined warnings - my $warn_handler = $SIG{__WARN__} || sub { warn @_ }; - local $SIG{__WARN__} = sub { - $warn_handler->(@_) - unless $_[0] =~ /^Subroutine \S+ redefined/; + eval { + eval_without_redefine_warnings ("require $class"); }; - eval "require $class;"; die "Failed to reload class $class: $@" if $@; } @@ -1364,7 +1347,7 @@ sub _default_moose_custom_content { sub _default_custom_content { my $self = shift; my $default = qq|\n\n# You can replace this text with custom| - . qq| content, and it will be preserved on regeneration|; + . qq| code or comments, and it will be preserved on regeneration|; if ($self->use_moose) { $default .= $self->_default_moose_custom_content; } @@ -1799,28 +1782,25 @@ sub _make_pod { } elsif ( $method eq 'add_columns' ) { $self->_pod( $class, "=head1 ACCESSORS" ); my $col_counter = 0; - my @cols = @_; + my @cols = @_; while( my ($name,$attrs) = splice @cols,0,2 ) { - $col_counter++; + $col_counter++; $self->_pod( $class, '=head2 ' . $name ); - $self->_pod( $class, - join "\n", map { - my $s = $attrs->{$_}; - $s = !defined $s ? 'undef' : - length($s) == 0 ? '(empty string)' : - ref($s) eq 'SCALAR' ? $$s : - ref($s) ? dumper_squashed $s : - looks_like_number($s) ? $s : - qq{'$s'} - ; - - " $_: $s" - } sort keys %$attrs, - ); - - if (my $comment = $self->__column_comment($self->{_class2table}{$class}, $col_counter)) { - $self->_pod( $class, $comment ); - } + $self->_pod( $class, + join "\n", map { + my $s = $attrs->{$_}; + $s = !defined $s ? 'undef' : + length($s) == 0 ? '(empty string)' : + ref($s) eq 'SCALAR' ? $$s : + ref($s) ? dumper_squashed $s : + looks_like_number($s) ? $s : qq{'$s'}; + + " $_: $s" + } sort keys %$attrs, + ); + if (my $comment = $self->__column_comment($self->{_class2table}{$class}, $col_counter, $name)) { + $self->_pod( $class, $comment ); + } } $self->_pod_cut( $class ); } elsif ( $method =~ /^(belongs_to|has_many|might_have)$/ ) {