From: Dagfinn Ilmari Mannsåker Date: Fri, 1 May 2009 20:11:19 +0000 (+0000) Subject: Fix for DBIx::Class 0.081 X-Git-Tag: 0.04006~1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=3a6bb3f3b51ff479f0f2aee3bae42068f77d31b3;p=dbsrgits%2FDBIx-Class-Schema-Loader.git Fix for DBIx::Class 0.081 - Pass schema object, not class, to RelBuilder - Reregister classes after building the relationships --- diff --git a/Changes b/Changes index 92ee58b..7400bc2 100644 --- a/Changes +++ b/Changes @@ -4,6 +4,7 @@ Revision history for Perl extension DBIx::Class::Schema::Loader - Fix Oracle constraint detection for non-owned schemas (RT #35732) - Add result_base_class and schema_base_class options (RT #43977) - Handle ResultSetManager deprecation warning in common tests + - Fix for DBIx::Class 0.081 0.04005 Sat Apr 05, 2008 - Fix DB2 support diff --git a/lib/DBIx/Class/Schema/Loader/Base.pm b/lib/DBIx/Class/Schema/Loader/Base.pm index 45c66e9..d89e2d9 100644 --- a/lib/DBIx/Class/Schema/Loader/Base.pm +++ b/lib/DBIx/Class/Schema/Loader/Base.pm @@ -263,7 +263,7 @@ sub new { if $self->{dump_overwrite}; $self->{relbuilder} = DBIx::Class::Schema::Loader::RelBuilder->new( - $self->schema_class, $self->inflect_plural, $self->inflect_singular + $self->schema, $self->inflect_plural, $self->inflect_singular ) if !$self->{skip_relationships}; $self; @@ -728,9 +728,11 @@ sub _load_relationships { foreach my $src_class (sort keys %$rel_stmts) { my $src_stmts = $rel_stmts->{$src_class}; - foreach my $stmt (@$src_stmts) { + foreach my $stmt (@{$src_stmts->{stmts}}) { $self->_dbic_stmt($src_class,$stmt->{method},@{$stmt->{args}}); } + $self->schema_class->register_class($src_stmts->{moniker}, $src_class); + $self->schema->register_class($src_stmts->{moniker}, $src_class) if $self->schema_class ne $self->schema; } } diff --git a/lib/DBIx/Class/Schema/Loader/RelBuilder.pm b/lib/DBIx/Class/Schema/Loader/RelBuilder.pm index 88671b5..270630d 100644 --- a/lib/DBIx/Class/Schema/Loader/RelBuilder.pm +++ b/lib/DBIx/Class/Schema/Loader/RelBuilder.pm @@ -24,9 +24,9 @@ is module is not (yet) for external use. =head2 new -Arguments: schema_class (scalar), inflect_plural, inflect_singular +Arguments: schema inflect_plural, inflect_singular -C<$schema_class> should be a schema class name, where the source +C<$schema> should be a schema instance, where the source classes have already been set up and registered. Column info, primary key, and unique constraints will be drawn from this schema for all of the existing source monikers. @@ -187,7 +187,7 @@ sub generate_code { delete $rev_cond{$_}; } - push(@{$all_code->{$local_class}}, + push(@{$all_code->{$local_class}{stmts}}, { method => 'belongs_to', args => [ $remote_relname, $remote_class, @@ -195,8 +195,9 @@ sub generate_code { ], } ); + $all_code->{$local_class}{moniker} = $local_moniker; - push(@{$all_code->{$remote_class}}, + push(@{$all_code->{$remote_class}{stmts}}, { method => 'has_many', args => [ $local_relname, $local_class, @@ -204,6 +205,7 @@ sub generate_code { ], } ); + $all_code->{$remote_class}{moniker} = $remote_moniker; } return $all_code;