release 0.53
[catagits/Catalyst-Model-DBIC-Schema.git] / lib / Catalyst / Helper / Model / DBIC / Schema.pm
index 5062ec1..2b9d8c2 100644 (file)
@@ -4,7 +4,7 @@ use namespace::autoclean;
 use Moose;
 no warnings 'uninitialized';
 
-our $VERSION = '0.51';
+our $VERSION = '0.53';
 $VERSION = eval $VERSION;
 
 use Carp;
@@ -311,15 +311,33 @@ sub _read_loader_args {
         $i += 2;
     }
 
-    while (defined $args->[$i]) {
-        my ($key, $val) = split /=/, $args->[$i++], 2;
+    my $have_loader = try {
+        Class::MOP::load_class('DBIx::Class::Schema::Loader::Base');
+        1;
+    };
 
-        if ($self->_is_struct($val)) {
-            $loader_args{$key} = $val;
-        } elsif ((my @vals = split /,/ => $val) > 1) {
-            $loader_args{$key} = \@vals;
-        } else {
-            $loader_args{$key} = $val;
+    if ($have_loader) {
+        while (defined $args->[$i]) {
+            $i++ while $self->_is_struct($args->[$i]);
+
+            last if not defined $args->[$i];
+
+            my ($key, $val) = split /=/, $args->[$i], 2;
+
+            if (not DBIx::Class::Schema::Loader::Base->can($key)) {
+                $i++;
+                next;
+            }
+
+            if ($self->_is_struct($val)) {
+                $loader_args{$key} = $val;
+            } elsif ((my @vals = split /,/ => $val) > 1) {
+                $loader_args{$key} = \@vals;
+            } else {
+                $loader_args{$key} = $val;
+            }
+
+            splice @$args, $i, 1;
         }
     }