Merge 'trunk' into 'current'
Brandon Black [Wed, 15 Nov 2006 14:30:06 +0000 (14:30 +0000)]
r11853@moloko (orig r2888):  blblack | 2006-11-15 08:29:23 -0600
commit the version bump + Changes update for 0.03009

14 files changed:
Build.PL
Changes
lib/DBIx/Class/Schema/Loader.pm
lib/DBIx/Class/Schema/Loader/Base.pm
lib/DBIx/Class/Schema/Loader/DBI.pm
lib/DBIx/Class/Schema/Loader/DBI/DB2.pm
lib/DBIx/Class/Schema/Loader/DBI/Pg.pm
lib/DBIx/Class/Schema/Loader/DBI/SQLite.pm
lib/DBIx/Class/Schema/Loader/DBI/Writing.pm
lib/DBIx/Class/Schema/Loader/DBI/mysql.pm
lib/DBIx/Class/Schema/Loader/RelBuilder.pm
t/20invocations.t
t/22dump.t
t/lib/dbixcsl_common_tests.pm

index 801579c..e66c1c8 100644 (file)
--- a/Build.PL
+++ b/Build.PL
@@ -9,10 +9,9 @@ my %arguments = (
         'Scalar::Util'                  => 0,
         'Data::Dump'                    => 1.06,
         'UNIVERSAL::require'            => 0.10,
-        'Lingua::EN::Inflect'           => 1.89,
         'Lingua::EN::Inflect::Number'   => 1.1,
         'Text::Balanced'                => 0,
-        'Class::Accessor'               => 0.22,
+        'Class::Accessor'               => 0.27,
         'Class::Data::Accessor'         => 0.02,
         'Class::C3'                     => 0.11,
         'Carp::Clan'                    => 0,
diff --git a/Changes b/Changes
index d47866c..01666c1 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,11 @@
 Revision history for Perl extension DBIx::Class::Schema::Loader
 
+        - columns_info_for imported from DBIx::Class
+        - relationships are now on by default, use skip_relationships
+          to disable them
+        - Removed previously deprecated methods/options
+        - Added $VERSION to all packages in this dist
+
 0.03009 Wed Nov 15 14:03:37 UTC 2006
        - fix for rt.cpan.org #22425 (use File::Spec where appropriate)
        - use full instead of short classnames in relationships (from victori)
index 03a8cce..bbc8fd3 100644 (file)
@@ -12,11 +12,11 @@ use Scalar::Util qw/ weaken /;
 # Always remember to do all digits for the version even if they're 0
 # i.e. first release of 0.XX *must* be 0.XX000. This avoids fBSD ports
 # brain damage and presumably various other packaging systems too
-our $VERSION = '0.03009';
+our $VERSION = '0.03999_01';
 
 __PACKAGE__->mk_classaccessor('dump_to_dir');
-__PACKAGE__->mk_classaccessor('loader');
-__PACKAGE__->mk_classaccessor('_loader_args');
+__PACKAGE__->mk_classaccessor('_loader_args' => {});
+__PACKAGE__->mk_classaccessor('_loader_invoked');
 
 =head1 NAME
 
@@ -28,7 +28,6 @@ DBIx::Class::Schema::Loader - Dynamic definition of a DBIx::Class::Schema
   use base qw/DBIx::Class::Schema::Loader/;
 
   __PACKAGE__->loader_options(
-      relationships           => 1,
       constraint              => '^foo.*',
       # debug                 => 1,
   );
@@ -66,9 +65,8 @@ than to be what you use in the long term for a complex database/project.
 
 That being said, transitioning your code from a Schema generated by this
 module to one that doesn't use this module should be straightforward and
-painless (as long as you're not using any methods that are now deprecated
-in this document), so don't shy away from it just for fears of the
-transition down the road.
+painless, so don't shy away from it just for fears of the transition down
+the road.
 
 =head1 METHODS
 
@@ -79,17 +77,10 @@ detailed information on all of the arguments, most of which are
 only useful in fairly complex scenarios, see the
 L<DBIx::Class::Schema::Loader::Base> documentation.
 
-This method is *required* at this time, for backwards compatibility
-reasons.  If you do not wish to change any options, just call it
-with an empty argument list during schema class initialization.
-
-Setting these options explicitly via this method B<after> calling
-C<connection> is deprecated and will stop working in version 0.04000.
-For now the code merely warns about this condition.
-
-The preferred way of doing things is to either call C<loader_options>
-before any connection is made, or embed the C<loader_options> in
-the connection information itself as shown below.
+One must call C<loader_options> before any connection is made,
+or embed the C<loader_options> in the connection information itself
+as shown below.  Setting C<loader_options> after the connection has
+already been made is useless.
 
 =cut
 
@@ -97,18 +88,7 @@ sub loader_options {
     my $self = shift;
     
     my %args = (ref $_[0] eq 'HASH') ? %{$_[0]} : @_;
-
-    my $class = ref $self || $self;
-    $args{schema} = $self;
-    $args{schema_class} = $class;
-    weaken($args{schema}) if ref $self;
-
     $self->_loader_args(\%args);
-    if($self->storage && !$class->loader) {
-        warn "Do not set loader_options after specifying the connection info,"
-           . " this will be unsupported in 0.04000";
-        $self->_invoke_loader;
-    }
 
     $self;
 }
@@ -117,7 +97,13 @@ sub _invoke_loader {
     my $self = shift;
     my $class = ref $self || $self;
 
-    $self->_loader_args->{dump_directory} ||= $self->dump_to_dir;
+    my $args = $self->_loader_args;
+
+    # set up the schema/schema_class arguments
+    $args->{schema} = $self;
+    $args->{schema_class} = $class;
+    weaken($args->{schema}) if ref $self;
+    $args->{dump_directory} ||= $self->dump_to_dir;
 
     # XXX this only works for relative storage_type, like ::DBI ...
     my $impl = "DBIx::Class::Schema::Loader" . $self->storage_type;
@@ -125,10 +111,8 @@ sub _invoke_loader {
       croak qq/Could not load storage_type loader "$impl": / .
             qq/"$UNIVERSAL::require::ERROR"/;
 
-    # XXX in the future when we get rid of ->loader, the next two
-    # lines can be replaced by "$impl->new(%{$self->_loader_args})->load;"
-    $class->loader($impl->new(%{$self->_loader_args}));
-    $class->loader->load;
+    $impl->new(%$args)->load;
+    $self->_loader_invoked(1);
 
     $self;
 }
@@ -159,7 +143,7 @@ sub connection {
     $self = $self->next::method(@_);
 
     my $class = ref $self || $self;
-    if($self->_loader_args && !$class->loader) {
+    if(!$class->_loader_invoked) {
         $self->_invoke_loader
     }
 
@@ -270,19 +254,19 @@ illustrated in these Examples:
     use DBIx::Class::Schema::Loader qw/ make_schema_at /;
     make_schema_at(
         'New::Schema::Name',
-        { relationships => 1, debug => 1 },
+        { debug => 1 },
         [ 'dbi:Pg:dbname="foo"','postgres' ],
     );
 
     # Complex: dump loaded schema to disk, all from the commandline:
-    perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:./lib -e 'make_schema_at("New::Schema::Name", { relationships => 1 }, [ "dbi:Pg:dbname=foo","postgres" ])'
+    perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:./lib -e 'make_schema_at("New::Schema::Name", { debug => 1 }, [ "dbi:Pg:dbname=foo","postgres" ])'
 
     # Same, but inside a script, and using a different way to specify the
     # dump directory:
     use DBIx::Class::Schema::Loader qw/ make_schema_at /;
     make_schema_at(
         'New::Schema::Name',
-        { relationships => 1, debug => 1, dump_directory => './lib' },
+        { debug => 1, dump_directory => './lib' },
         [ 'dbi:Pg:dbname="foo"','postgres' ],
     );
 
@@ -310,7 +294,6 @@ replace the DB::Main with the following code:
   use base qw/DBIx::Class::Schema::Loader/;
 
   __PACKAGE__->loader_options(
-      relationships => 1,
       debug         => 1,
   );
   __PACKAGE__->connection('dbi:SQLite:example.db');
@@ -320,89 +303,6 @@ replace the DB::Main with the following code:
 and remove the Main directory tree (optional).  Every thing else
 should work the same
 
-=head1 DEPRECATED METHODS
-
-You don't need to read anything in this section unless you're upgrading
-code that was written against pre-0.03 versions of this module.  This
-version is intended to be backwards-compatible with pre-0.03 code, but
-will issue warnings about your usage of deprecated features/methods.
-
-B<All of these deprecated methods will dissappear in version 0.04000>,
-and converting code that uses these methods should be trivial.
-
-=head2 load_from_connection
-
-This deprecated method is now roughly an alias for L</loader_options>.
-
-For now, using this method will invoke the legacy behavior for
-backwards compatibility, and merely emit a warning about upgrading
-your code.
-
-It also reverts the default inflection scheme to
-use L<Lingua::EN::Inflect> just like pre-0.03 versions of this
-module did.
-
-You can force these legacy inflections with the
-option L<DBIx::Class::Schema::Loader::Base/legacy_default_inflections>,
-even after switch over to the preferred L</loader_options> way of doing
-things.  That option will not go away until at least 0.05.
-
-See the source of this method for more details.
-
-=cut
-
-sub load_from_connection {
-    my ($self, %args) = @_;
-
-    my $cmds_ver = $Catalyst::Model::DBIC::Schema::VERSION;
-    if($cmds_ver) {
-        if($cmds_ver < 0.14) {
-            warn 'You should upgrade your installation of'
-               . ' Catalyst::Model::DBIC::Schema to 0.14 or higher, then:';
-        }
-        warn 'You should regenerate your Model files, which may eliminate'
-           . ' the following deprecation warning:';
-    }
-    warn 'load_from_connection deprecated, and will dissappear in 0.04000, '
-       . 'please [re-]read the [new] DBIx::Class::Schema::Loader '
-       . 'documentation';
-
-    # Support the old connect_info / dsn / etc args...
-    $args{connect_info} = [
-        delete $args{dsn},
-        delete $args{user},
-        delete $args{password},
-        delete $args{options},
-    ] if $args{dsn};
-
-    $self->connection(@{delete $args{connect_info}})
-        if $args{connect_info};
-
-    $self->loader_options('legacy_default_inflections' => 1, %args);
-}
-
-=head2 loader
-
-This is an accessor in the generated Schema class for accessing
-the L<DBIx::Class::Schema::Loader::Base> -based loader object
-that was used during construction.  See the
-L<DBIx::Class::Schema::Loader::Base> docs for more information
-on the available loader methods there.
-
-This accessor is deprecated.  Do not use it.  Anything you can
-get from C<loader>, you can get via the normal L<DBIx::Class::Schema>
-methods, and your code will be more robust and forward-thinking
-for doing so.
-
-If you're already using C<loader> in your code, make an effort
-to get rid of it.  If you think you've found a situation where it
-is necessary, let me know and we'll see what we can do to remedy
-that situation.
-
-In some future version, this accessor *will* disappear.  It was
-apparently quite a design/API mistake to ever have exposed it to
-user-land in the first place, all things considered.
-
 =head1 KNOWN ISSUES
 
 =head2 Multiple Database Schemas
index 6b89a29..3bb81a0 100644 (file)
@@ -12,6 +12,8 @@ use POSIX qw//;
 use File::Spec qw//;
 require DBIx::Class;
 
+our $VERSION = '0.03999_01';
+
 __PACKAGE__->mk_ro_accessors(qw/
                                 schema
                                 schema_class
@@ -23,7 +25,7 @@ __PACKAGE__->mk_ro_accessors(qw/
                                 left_base_classes
                                 components
                                 resultset_components
-                                relationships
+                                skip_relationships
                                 moniker_map
                                 inflect_singular
                                 inflect_plural
@@ -31,8 +33,6 @@ __PACKAGE__->mk_ro_accessors(qw/
                                 dump_directory
                                 dump_overwrite
 
-                                legacy_default_inflections
-
                                 db_schema
                                 _tables
                                 classes
@@ -57,9 +57,10 @@ classes, and implements the common functionality between them.
 These constructor options are the base options for
 L<DBIx::Class::Schema::Loader/loader_opts>.  Available constructor options are:
 
-=head2 relationships
+=head2 skip_relationships
 
-Try to automatically detect/setup has_a and has_many relationships.
+Skip setting up relationships.  The default is to attempt the loading
+of relationships.
 
 =head2 debug
 
@@ -137,19 +138,6 @@ classes.  A good example would be C<AlwaysRS>.  Component
 C<ResultSetManager> will be automatically added to the above
 C<components> list if this option is set.
 
-=head2 legacy_default_inflections
-
-Setting this option changes the default fallback for L</inflect_plural> to
-utilize L<Lingua::EN::Inflect/PL>, and L</inflect_singular> to a no-op.
-Those choices produce substandard results, but might be necessary to support
-your existing code if you started developing on a version prior to 0.03 and
-don't wish to go around updating all your relationship names to the new
-defaults.
-
-This option will continue to be supported until at least version 0.05xxx,
-but may dissappear sometime thereafter.  It is recommended that you update
-your code to use the newer-style inflections when you have the time.
-
 =head2 dump_directory
 
 This option is designed to be a tool to help you transition from this
@@ -180,25 +168,6 @@ If set to a true value, the dumping code will overwrite existing files.
 The default is false, which means the dumping code will skip the already
 existing files.
 
-=head1 DEPRECATED CONSTRUCTOR OPTIONS
-
-B<These will be removed in version 0.04000 !!!>
-
-=head2 inflect_map
-
-Equivalent to L</inflect_plural>.
-
-=head2 inflect
-
-Equivalent to L</inflect_plural>.
-
-=head2 connect_info, dsn, user, password, options
-
-You connect these schemas the same way you would any L<DBIx::Class::Schema>,
-which is by calling either C<connect> or C<connection> on a schema class
-or object.  These options are only supported via the deprecated
-C<load_from_connection> interface, which is also being removed in 0.04000.
-
 =head1 METHODS
 
 None of these methods are intended for direct invocation by regular
@@ -247,14 +216,6 @@ sub new {
     $self->{monikers} = {};
     $self->{classes} = {};
 
-    # Support deprecated arguments
-    for(qw/inflect_map inflect/) {
-        warn "Argument $_ is deprecated in favor of 'inflect_plural'"
-           . ", and will be removed in 0.04000"
-                if $self->{$_};
-    }
-    $self->{inflect_plural} ||= $self->{inflect_map} || $self->{inflect};
-
     $self->{schema_class} ||= ( ref $self->{schema} || $self->{schema} );
     $self->{schema} ||= $self->{schema_class};
 
@@ -318,7 +279,7 @@ sub load {
     my $self = shift;
 
     $self->_load_classes;
-    $self->_load_relationships if $self->relationships;
+    $self->_load_relationships if ! $self->skip_relationships;
     $self->_load_external;
     $self->_dump_to_dir if $self->dump_directory;
 
@@ -497,7 +458,7 @@ sub _load_classes {
 
         my $cols = $self->_table_columns($table);
         my $col_info;
-        eval { $col_info = $schema->storage->columns_info_for($table) };
+        eval { $col_info = $self->_columns_info_for($table) };
         if($@) {
             $self->_dbic_stmt($table_class,'add_columns',@$cols);
         }
index 943c34f..3c19ca5 100644 (file)
@@ -2,11 +2,13 @@ package DBIx::Class::Schema::Loader::DBI;
 
 use strict;
 use warnings;
-use base qw/DBIx::Class::Schema::Loader::Base Class::Accessor::Fast/;
+use base qw/DBIx::Class::Schema::Loader::Base/;
 use Class::C3;
 use Carp::Clan qw/^DBIx::Class/;
 use UNIVERSAL::require;
 
+our $VERSION = '0.03999_01';
+
 =head1 NAME
 
 DBIx::Class::Schema::Loader::DBI - DBIx::Class::Schema::Loader DBI Implementation.
@@ -81,6 +83,20 @@ sub _tables_list {
     return @tables;
 }
 
+=head2 load
+
+We override L<DBIx::Class::Schema::Loader::Base/load> here to hook in our localized settings for C<$dbh> error handling.
+
+=cut
+
+sub load {
+    my $self = shift;
+
+    local $self->schema->storage->dbh->{RaiseError} = 1;
+    local $self->schema->storage->dbh->{PrintError} = 0;
+    $self->next::method(@_);
+}
+
 # Returns an arrayref of column names
 sub _table_columns {
     my ($self, $table) = @_;
@@ -151,6 +167,63 @@ sub _table_fk_info {
     return \@rels;
 }
 
+# ported in from DBIx::Class::Storage::DBI:
+sub _columns_info_for {
+    my ($self, $table) = @_;
+
+    my $dbh = $self->schema->storage->dbh;
+
+    if ($dbh->can('column_info')) {
+        my %result;
+        eval {
+            my $sth = $dbh->column_info( undef, $self->db_schema, $table, '%' );
+            $sth->execute();
+            while ( my $info = $sth->fetchrow_hashref() ){
+                my %column_info;
+                $column_info{data_type}   = $info->{TYPE_NAME};
+                $column_info{size}      = $info->{COLUMN_SIZE};
+                $column_info{is_nullable}   = $info->{NULLABLE} ? 1 : 0;
+                $column_info{default_value} = $info->{COLUMN_DEF};
+                my $col_name = $info->{COLUMN_NAME};
+                $col_name =~ s/^\"(.*)\"$/$1/;
+
+                $result{$col_name} = \%column_info;
+            }
+        };
+      return \%result if !$@ && scalar keys %result;
+    }
+
+    if($self->db_schema) {
+        $table = $self->db_schema . $self->{_namesep} . $table;
+    }
+    my %result;
+    my $sth = $dbh->prepare("SELECT * FROM $table WHERE 1=0");
+    $sth->execute;
+    my @columns = @{$sth->{NAME_lc}};
+    for my $i ( 0 .. $#columns ){
+        my %column_info;
+        my $type_num = $sth->{TYPE}->[$i];
+        my $type_name;
+        if(defined $type_num && $dbh->can('type_info')) {
+            my $type_info = $dbh->type_info($type_num);
+            $type_name = $type_info->{TYPE_NAME} if $type_info;
+        }
+        $column_info{data_type} = $type_name ? $type_name : $type_num;
+        $column_info{size} = $sth->{PRECISION}->[$i];
+        $column_info{is_nullable} = $sth->{NULLABLE}->[$i] ? 1 : 0;
+
+        if ($column_info{data_type} =~ m/^(.*?)\((.*?)\)$/) {
+            $column_info{data_type} = $1;
+            $column_info{size}    = $2;
+        }
+
+        $result{$columns[$i]} = \%column_info;
+    }
+
+    return \%result;
+}
+
+
 =head1 SEE ALSO
 
 L<DBIx::Class::Schema::Loader>
index e600ee2..f029457 100644 (file)
@@ -6,6 +6,8 @@ use base 'DBIx::Class::Schema::Loader::DBI';
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
+our $VERSION = '0.03999_01';
+
 =head1 NAME
 
 DBIx::Class::Schema::Loader::DBI::DB2 - DBIx::Class::Schema::Loader::DBI DB2 Implementation.
@@ -15,10 +17,7 @@ DBIx::Class::Schema::Loader::DBI::DB2 - DBIx::Class::Schema::Loader::DBI DB2 Imp
   package My::Schema;
   use base qw/DBIx::Class::Schema::Loader/;
 
-  __PACKAGE__->loader_options(
-    relationships => 1,
-    db_schema     => "MYSCHEMA",
-  );
+  __PACKAGE__->loader_options( db_schema => "MYSCHEMA" );
 
   1;
 
index 66b2745..5f4ae7c 100644 (file)
@@ -6,6 +6,8 @@ use base 'DBIx::Class::Schema::Loader::DBI';
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
+our $VERSION = '0.03999_01';
+
 =head1 NAME
 
 DBIx::Class::Schema::Loader::DBI::Pg - DBIx::Class::Schema::Loader::DBI
@@ -16,9 +18,7 @@ PostgreSQL Implementation.
   package My::Schema;
   use base qw/DBIx::Class::Schema::Loader/;
 
-  __PACKAGE__->loader_options(
-    relationships => 1,
-  );
+  __PACKAGE__->loader_options( debug => 1 );
 
   1;
 
index 8ca2d66..2bba30f 100644 (file)
@@ -7,6 +7,8 @@ use Carp::Clan qw/^DBIx::Class/;
 use Text::Balanced qw( extract_bracketed );
 use Class::C3;
 
+our $VERSION = '0.03999_01';
+
 =head1 NAME
 
 DBIx::Class::Schema::Loader::DBI::SQLite - DBIx::Class::Schema::Loader::DBI SQLite Implementation.
@@ -16,7 +18,7 @@ DBIx::Class::Schema::Loader::DBI::SQLite - DBIx::Class::Schema::Loader::DBI SQLi
   package My::Schema;
   use base qw/DBIx::Class::Schema::Loader/;
 
-  __PACKAGE__->loader_optoins( relationships => 1 );
+  __PACKAGE__->loader_options( debug => 1 );
 
   1;
 
index 9837fd2..23b9ef3 100644 (file)
@@ -1,6 +1,8 @@
 package DBIx::Class::Schema::Loader::DBI::Writing;
 use strict;
 
+our $VERSION = '0.03999_01';
+
 # Empty. POD only.
 
 1;
index 7d4afca..0ff0151 100644 (file)
@@ -6,6 +6,8 @@ use base 'DBIx::Class::Schema::Loader::DBI';
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
+our $VERSION = '0.03999_01';
+
 =head1 NAME
 
 DBIx::Class::Schema::Loader::DBI::mysql - DBIx::Class::Schema::Loader::DBI mysql Implementation.
@@ -15,9 +17,7 @@ DBIx::Class::Schema::Loader::DBI::mysql - DBIx::Class::Schema::Loader::DBI mysql
   package My::Schema;
   use base qw/DBIx::Class::Schema::Loader/;
 
-  __PACKAGE__->load_from_connection(
-    relationships => 1,
-  );
+  __PACKAGE__->loader_options( debug => 1 );
 
   1;
 
index 9b61371..5ccb769 100644 (file)
@@ -3,9 +3,10 @@ package DBIx::Class::Schema::Loader::RelBuilder;
 use strict;
 use warnings;
 use Carp::Clan qw/^DBIx::Class/;
-use Lingua::EN::Inflect ();
 use Lingua::EN::Inflect::Number ();
 
+our $VERSION = '0.03999_01';
+
 =head1 NAME
 
 DBIx::Class::Schema::Loader::RelBuilder - Builds relationships for DBIx::Class::Schema::Loader
@@ -102,9 +103,7 @@ sub _inflect_plural {
         return $inflected if $inflected;
     }
 
-    return $self->{legacy_default_inflections}
-        ? Lingua::EN::Inflect::PL($relname)
-        : Lingua::EN::Inflect::Number::to_PL($relname);
+    return Lingua::EN::Inflect::Number::to_PL($relname);
 }
 
 # Singularize a relationship name
@@ -120,9 +119,7 @@ sub _inflect_singular {
         return $inflected if $inflected;
     }
 
-    return $self->{legacy_default_inflections}
-        ? $relname
-        : Lingua::EN::Inflect::Number::to_S($relname);
+    return Lingua::EN::Inflect::Number::to_S($relname);
 }
 
 sub generate_code {
index 49d16af..fdab791 100644 (file)
@@ -3,8 +3,6 @@ use Test::More;
 use lib qw(t/lib);
 use make_dbictest_db;
 
-$SIG{__WARN__} = sub { }; # Suppress warnings, as we test a lot of deprecated stuff here
-
 # Takes a $schema as input, runs 4 basic tests
 sub test_schema {
     my ($testname, $schema) = @_;
@@ -23,49 +21,16 @@ sub test_schema {
 }
 
 my @invocations = (
-    'deprecated_one' => sub {
-        package DBICTest::Schema::1;
-        use base qw/ DBIx::Class::Schema::Loader /;
-        __PACKAGE__->connection($make_dbictest_db::dsn);
-        __PACKAGE__->load_from_connection( relationships => 1 );
-        __PACKAGE__;
-    },
-    'deprecated_two' => sub {
-        package DBICTest::Schema::2;
-        use base qw/ DBIx::Class::Schema::Loader /;
-        __PACKAGE__->load_from_connection(
-            relationships => 1,
-            connect_info => [ $make_dbictest_db::dsn ],
-        );
-        __PACKAGE__;
-    },
-    'deprecated_three' => sub {
-        package DBICTest::Schema::3;
-        use base qw/ DBIx::Class::Schema::Loader /;
-        __PACKAGE__->load_from_connection(
-            relationships => 1,
-            dsn => $make_dbictest_db::dsn,
-        );
-        __PACKAGE__;
-    },
-    'deprecated_four' => sub {
-        package DBICTest::Schema::4;
-        use base qw/ DBIx::Class::Schema::Loader /;
-        __PACKAGE__->connection($make_dbictest_db::dsn);
-        __PACKAGE__->loader_options( relationships => 1 );
-        __PACKAGE__;
-    },
     'hardcode' => sub {
         package DBICTest::Schema::5;
         use base qw/ DBIx::Class::Schema::Loader /;
-        __PACKAGE__->loader_options( relationships => 1 );
         __PACKAGE__->connection($make_dbictest_db::dsn);
         __PACKAGE__;
     },
     'normal' => sub {
         package DBICTest::Schema::6;
         use base qw/ DBIx::Class::Schema::Loader /;
-        __PACKAGE__->loader_options( relationships => 1 );
+        __PACKAGE__->loader_options();
         __PACKAGE__->connect($make_dbictest_db::dsn);
     },
     'make_schema_at' => sub {
index 47106a9..ba5eda3 100644 (file)
@@ -32,7 +32,7 @@ rmtree($dump_path, 1, 1);
 eval { DBICTest::Schema::1->connect($make_dbictest_db::dsn) };
 ok(!$@, 'no death with dump_directory set') or diag "Dump failed: $@";
 
-DBICTest::Schema::1->loader(undef);
+DBICTest::Schema::1->_loader_invoked(undef);
 
 SKIP: {
   skip "ActiveState perl produces additional warnings", 5
@@ -58,7 +58,7 @@ eval { DBICTest::Schema::2->connect($make_dbictest_db::dsn) };
 ok(!$@, 'no death with dump_directory set (overwrite1)')
     or diag "Dump failed: $@";
 
-DBICTest::Schema::2->loader(undef);
+DBICTest::Schema::2->_loader_invoked(undef);
 eval { DBICTest::Schema::2->connect($make_dbictest_db::dsn) };
 ok(!$@, 'no death with dump_directory set (overwrite2)')
     or diag "Dump failed: $@";
index aa32df0..99a2d13 100644 (file)
@@ -100,8 +100,13 @@ sub run_tests {
     }
 
     my $conn = $schema_class->clone;
-    my $monikers = $schema_class->loader->monikers;
-    my $classes = $schema_class->loader->classes;
+    my $monikers = {};
+    my $classes = {};
+    foreach my $source_name ($schema_class->sources) {
+        my $table_name = $schema_class->source($source_name)->from;
+        $monikers->{$table_name} = $source_name;
+        $classes->{$table_name} = $schema_class . q{::} . $source_name;
+    }
 
     my $moniker1 = $monikers->{loader_test1};
     my $class1   = $classes->{loader_test1};