Fix for DBIx::Class 0.081
Dagfinn Ilmari Mannsåker [Fri, 1 May 2009 20:11:19 +0000 (20:11 +0000)]
- Pass schema object, not class, to RelBuilder
- Reregister classes after building the relationships

Changes
lib/DBIx/Class/Schema/Loader/Base.pm
lib/DBIx/Class/Schema/Loader/RelBuilder.pm

diff --git a/Changes b/Changes
index 92ee58b..7400bc2 100644 (file)
--- 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
index 45c66e9..d89e2d9 100644 (file)
@@ -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;
     }
 }
 
index 88671b5..270630d 100644 (file)
@@ -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;