Fixes, refactoring, test additions
Matt S Trout [Wed, 10 Aug 2005 18:24:21 +0000 (18:24 +0000)]
Build.PL
lib/DBIx/Class.pm
lib/DBIx/Class/Componentised.pm [new file with mode: 0644]
lib/DBIx/Class/Schema.pm
t/01core.t
t/lib/DBICTest.pm

index 125de09..a665523 100644 (file)
--- a/Build.PL
+++ b/Build.PL
@@ -6,11 +6,12 @@ my %arguments = (
     license            => 'perl',
     module_name        => 'DBIx::Class',
     requires           => {
-        'DBI'           => 0,
-        'NEXT'          => 0,
-        'SQL::Abstract' => 1.19,
-        'DBD::SQLite'   => 1.08,
-       'Tie::IxHash'   => 0,
+        'DBI'                       => 0,
+        'UNIVERSAL::require'        => 0,
+        'NEXT'                      => 0,
+        'SQL::Abstract'             => 1.19,
+        'DBD::SQLite'               => 1.08,
+       'Tie::IxHash'               => 0,
     },
     create_makefile_pl => 'passthrough',
     create_readme      => 1,
index 4dba9d1..9f05f06 100644 (file)
@@ -4,31 +4,10 @@ use strict;
 use warnings;
 
 use vars qw($VERSION);
-use base;
-
-$VERSION = '0.01';
-
-sub load_components {
-  my $class = shift;
-  my @comp = map { "DBIx::Class::$_" } grep { $_ !~ /^#/ } @_;
-  $class->_load_components(@comp);
-}
-
-sub load_own_components {
-  my $class = shift;
-  my @comp = map { "${class}::$_" } grep { $_ !~ /^#/ } @_;
-  $class->_load_components(@comp);
-}
-
-sub _load_components {
-  my ($class, @comp) = @_;
-  foreach my $comp (@comp) {
-    eval "use $comp";
-    die $@ if $@;
-  }
-  no strict 'refs';
-  unshift(@{"${class}::ISA"}, @comp);
-}
+use base qw/DBIx::Class::Componentised/;
+
+$VERSION = '0.02';
+
 
 1;
 
diff --git a/lib/DBIx/Class/Componentised.pm b/lib/DBIx/Class/Componentised.pm
new file mode 100644 (file)
index 0000000..72dd6f2
--- /dev/null
@@ -0,0 +1,32 @@
+package DBIx::Class::Componentised;
+
+sub inject_base {
+  my ($class, $target, @to_inject) = @_;
+  {
+    no strict 'refs';
+    unshift(@{"${target}::ISA"}, grep { $target ne $_ } @to_inject);
+  }
+}
+
+sub load_components {
+  my $class = shift;
+  my @comp = map { "DBIx::Class::$_" } grep { $_ !~ /^#/ } @_;
+  $class->_load_components(@comp);
+}
+
+sub load_own_components {
+  my $class = shift;
+  my @comp = map { "${class}::$_" } grep { $_ !~ /^#/ } @_;
+  $class->_load_components(@comp);
+}
+
+sub _load_components {
+  my ($class, @comp) = @_;
+  foreach my $comp (@comp) {
+    eval "use $comp";
+    die $@ if $@;
+  }
+  $class->inject_base($class => @comp);
+}
+
+1;
index d33f4d4..d704d82 100644 (file)
@@ -6,7 +6,7 @@ use warnings;
 use base qw/Class::Data::Inheritable/;
 use base qw/DBIx::Class/;
 
-__PACKAGE__->load_components(qw/Exception/);
+__PACKAGE__->load_components(qw/Exception Componentised/);
 __PACKAGE__->mk_classdata('class_registrations' => {});
 
 =head1 NAME
@@ -89,6 +89,7 @@ sub compose_connection {
   while (my ($comp, $comp_class) = each %reg) {
     my $target_class = "${target}::${comp}";
     $class->inject_base($target_class, $conn_class, $comp_class);
+    $target_class->table($comp_class->table);
     @map{$comp, $comp_class} = ($target_class, $target_class);
   }
   {
@@ -109,14 +110,6 @@ sub setup_connection_class {
   $target->connection(@info);
 }
 
-sub inject_base {
-  my ($class, $target, @to_inject) = @_;
-  {
-    no strict 'refs';
-    unshift(@{"${target}::ISA"}, grep { $target ne $_ } @to_inject);
-  }
-}
-
 1;
 
 =back
index fbc1851..5ccdd40 100644 (file)
@@ -1,6 +1,6 @@
 use Test::More;
 
-plan tests => 22;
+plan tests => 23;
 
 use lib qw(t/lib);
 
@@ -90,3 +90,7 @@ ok($new->in_storage, 'insert_or_update insert ok');
 $new->position(5);
 $new->insert_or_update;
 is( DBICTest::Track->find(100)->position, 5, 'insert_or_update update ok');
+
+eval { DBICTest::Track->load_components('DoesNotExist'); };
+
+ok $@, $@;
index 1bc01c5..525703e 100755 (executable)
@@ -1,7 +1,6 @@
 use strict;
 use warnings;
 use DBICTest::Schema;
-use DateTime;
 
 my $db_file = "t/var/DBIxClass.db";