X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FReplicated%2FPool.pm;h=dfc33ecdbb5ae776ce624c305f7c652b0ce631de;hb=cea43436e10983c218ded47e1561183096685f9b;hp=a496512a4b71ee00982621653fceed8fd7310b70;hpb=243d702ea2d1350e9c08d52eb84cdde745913452;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm b/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm index a496512..dfc33ec 100644 --- a/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm +++ b/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm @@ -7,6 +7,7 @@ use Scalar::Util 'reftype'; use DBI (); use Carp::Clan qw/^DBIx::Class/; use MooseX::Types::Moose qw/Num Int ClassName HashRef/; +use DBIx::Class::Storage::DBI::Replicated::Types 'DBICStorageDBI'; use namespace::clean -except => 'meta'; @@ -152,6 +153,14 @@ has next_unknown_replicant_id => ( }, ); +=head2 master + +Reference to the master Storage. + +=cut + +has master => (is => 'rw', isa => DBICStorageDBI, weak_ref => 1); + =head1 METHODS This class defines the following methods. @@ -243,7 +252,18 @@ sub connect_replicant { $replicant->_determine_driver }); - DBIx::Class::Storage::DBI::Replicated::Replicant->meta->apply($replicant); + Moose::Meta::Class->initialize(ref $replicant); + + my $class = Moose::Meta::Class->create_anon_class( + superclasses => [ ref $replicant ], + roles => [ 'DBIx::Class::Storage::DBI::Replicated::Replicant' ], + cache => 1, + ); + $class->rebless_instance($replicant); + + # link back to master + $replicant->master($self->master); + return $replicant; }