C::M::DBIC::Schema - warn on empty schema
Rafael Kitover [Sun, 3 May 2009 19:13:06 +0000 (19:13 +0000)]
Changes
lib/Catalyst/Model/DBIC/Schema.pm
lib/Catalyst/Model/DBIC/Schema/Role/Caching.pm
lib/Catalyst/Model/DBIC/Schema/Role/Replicated.pm
lib/Catalyst/Model/DBIC/Schema/Types.pm

diff --git a/Changes b/Changes
index 5ebcbc2..9f6aed9 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,6 @@
 Revision history for Perl extension Catalyst::Model::DBIC::Schema
 
+        - warn on empty schema
         - create=dynamic deprecation warning
         - conversion to Moose (of Model, helper to follow)
         - cursor caching support (via ::Role::Caching)
index 0f2370f..4c3b129 100644 (file)
@@ -7,7 +7,7 @@ with 'MooseX::Object::Pluggable';
 
 our $VERSION = '0.24';
 
-use Carp::Clan '^Catalyst::Model::DBIC::Schema';
+use Carp::Clan '^Catalyst::Model::DBIC::Schema::';
 use Data::Dumper;
 use DBIx::Class ();
 use Scalar::Util 'reftype';
@@ -418,7 +418,7 @@ sub BUILD {
             $self->connect_info($schema_class->storage->connect_info);
         }
         else {
-            croak "Either ->config->{connect_info} must be defined for $class"
+            die "Either ->config->{connect_info} must be defined for $class"
                   . " or $schema_class must have connect info defined on it."
                  . " Here's what we got:\n"
                  . Dumper($self);
@@ -487,7 +487,13 @@ sub _install_rs_models {
     my $class = $self->_class_name;
 
     no strict 'refs';
-    foreach my $moniker ($self->schema->sources) {
+
+    my @sources = $self->schema->sources;
+
+    die "No sources found (did you forget to define your tables?)"
+        unless @sources;
+
+    foreach my $moniker (@sources) {
         my $classname = "${class}::$moniker";
         *{"${classname}::ACCEPT_CONTEXT"} = sub {
             shift;
index ba374b5..b540e01 100644 (file)
@@ -1,7 +1,7 @@
 package Catalyst::Model::DBIC::Schema::Role::Caching;
 
 use Moose::Role;
-use Carp::Clan '^Catalyst::Model::DBIC::Schema';
+use Carp::Clan '^Catalyst::Model::DBIC::Schema::';
 
 use namespace::clean -except => 'meta';
 
index 2ef3c51..dfe5c8f 100644 (file)
@@ -2,7 +2,7 @@ package Catalyst::Model::DBIC::Schema::Role::Replicated;
 
 use Moose::Role;
 use Moose::Autobox;
-use Carp::Clan '^Catalyst::Model::DBIC::Schema';
+use Carp::Clan '^Catalyst::Model::DBIC::Schema::';
 
 use Catalyst::Model::DBIC::Schema::Types 'ConnectInfos';
 
@@ -60,12 +60,14 @@ after setup => sub {
     } else {
         $self->storage_type('::DBI::Replicated');
     }
+
+    $self->connect_info->{balancer_type} ||= '::Random';
 };
 
 after finalize => sub {
     my $self = shift;
 
-    $self->storage->connect_replicants($self->replicants->flatten);
+    $self->storage->connect_replicants(map [ $_ ], $self->replicants->flatten);
 };
 
 =head1 SEE ALSO
index 989d502..9b440a2 100644 (file)
@@ -3,10 +3,10 @@ package Catalyst::Model::DBIC::Schema::Types;
 use MooseX::Types
     -declare => [qw/ConnectInfo ConnectInfos Replicants SchemaClass/];
 
+use Carp::Clan '^Catalyst::Model::DBIC::Schema::';
 use MooseX::Types::Moose qw/ArrayRef HashRef Str ClassName/;
 use Scalar::Util 'reftype';
 use List::MoreUtils 'all';
-use Carp;
 
 use namespace::clean -except => 'meta';
 
@@ -57,16 +57,16 @@ sub _coerce_connect_info_from_arrayref {
         for my $i (0..1) {
             my $extra = shift @$_;
             last unless $extra;
-            croak "invalid connect_info" unless reftype $extra eq 'HASH';
+            die "invalid connect_info" unless reftype $extra eq 'HASH';
 
             %connect_info = (%connect_info, %$extra);
         }
 
-        croak "invalid connect_info" if @$_;
+        die "invalid connect_info" if @$_;
     } elsif (@$_ == 1 && reftype $_->[0] eq 'HASH') {
         return $_->[0];
     } else {
-        croak "invalid connect_info";
+        die "invalid connect_info";
     }
 
     \%connect_info;