support ::DBI::Replicated opts in connect_info
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Schema.pm
index aa32f25..71faab7 100644 (file)
@@ -1275,15 +1275,21 @@ sub _register_source {
 
   my $rs_class = $source->result_class;
 
-
   my %reg = %{$self->source_registrations};
   $reg{$moniker} = $source;
   $self->source_registrations(\%reg);
 
   return if ($params->{extra});
+  return unless defined($rs_class) && $rs_class->can('result_source_instance');
 
   my %map = %{$self->class_mappings};
-  if (exists $map{$rs_class} and $rs_class->result_source_instance ne $orig_source) {
+  if (
+    exists $map{$rs_class}
+      and
+    $map{$rs_class} ne $moniker
+      and
+    $rs_class->result_source_instance ne $orig_source
+  ) {
     carp "$rs_class already has a source, use register_extra_source for additional sources";
   }
   $map{$rs_class} = $moniker;