Comprehensive diagnostic on incorrect ResultSource metadata use
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / ResultSourceHandle.pm
index 733db83..169cb4a 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 
 use base qw/DBIx::Class/;
 
-use Try::Tiny;
+use DBIx::Class::_Util 'dbic_internal_try';
 use namespace::clean;
 
 use overload
@@ -68,7 +68,7 @@ sub resolve {
     # vague error message as this is never supposed to happen
     "Unable to resolve moniker '%s' - please contact the dev team at %s",
     $_[0]->source_moniker,
-    'http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class.pm#GETTING_HELP/SUPPORT',
+    DBIx::Class::_ENV_::HELP_URL,
   ), 'full_stacktrace');
 }
 
@@ -112,11 +112,16 @@ sub STORABLE_thaw {
   }
   elsif( my $rs = $from_class->result_source_instance ) {
     # in the off-chance we are using CDBI-compat and have leaked $schema already
-    if( my $s = try { $rs->schema } ) {
+    if( my $s = dbic_internal_try { $rs->schema } ) {
       $self->schema( $s );
     }
     else {
-      $rs->source_name( $self->source_moniker );
+      # FIXME do not use accessor here - will trigger the divergent meta logic
+      # Ideally this should be investigated and fixed properly, but the
+      # codepath is so obscure, and the trigger point (t/52leaks.t) so bizarre
+      # that... meh.
+      $rs->{source_name} = $self->source_moniker;
+
       $rs->{_detached_thaw} = 1;
       $self->_detached_source( $rs );
     }
@@ -128,9 +133,16 @@ sub STORABLE_thaw {
   }
 }
 
-=head1 AUTHOR
+=head1 FURTHER QUESTIONS?
+
+Check the list of L<additional DBIC resources|DBIx::Class/GETTING HELP/SUPPORT>.
+
+=head1 COPYRIGHT AND LICENSE
 
-Ash Berlin C<< <ash@cpan.org> >>
+This module is free software L<copyright|DBIx::Class/COPYRIGHT AND LICENSE>
+by the L<DBIx::Class (DBIC) authors|DBIx::Class/AUTHORS>. You can
+redistribute it and/or modify it under the same terms as the
+L<DBIx::Class library|DBIx::Class/COPYRIGHT AND LICENSE>.
 
 =cut