::Replicated - test hashref for connect_replicants and croak on coderef, switch to...
[dbsrgits/DBIx-Class-Historic.git] / lib / DBIx / Class / Schema.pm
index d40ef09..71faab7 100644 (file)
@@ -617,7 +617,7 @@ sub txn_do {
   $self->storage->txn_do(@_);
 }
 
-=head2 txn_scope_guard (EXPERIMENTAL)
+=head2 txn_scope_guard
 
 Runs C<txn_scope_guard> on the schema's storage. See 
 L<DBIx::Class::Storage/txn_scope_guard>.
@@ -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;