From: Rafael Kitover Date: Sat, 9 May 2009 09:59:46 +0000 (+0000) Subject: C::M::DBIC::Schema - finish up Role::Replicated X-Git-Tag: v0.26~38 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Model-DBIC-Schema.git;a=commitdiff_plain;h=bd309c0c18479ee53f8c1aa8c577860358183e9e C::M::DBIC::Schema - finish up Role::Replicated --- diff --git a/Makefile.PL b/Makefile.PL index c8d72b3..4d1e9b2 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -3,8 +3,9 @@ use inc::Module::Install 0.87; name 'Catalyst-Model-DBIC-Schema'; all_from 'lib/Catalyst/Model/DBIC/Schema.pm'; -requires 'DBIx::Class' => '0.08100'; +requires 'DBIx::Class' => '0.08104'; requires 'Catalyst::Runtime' => '5.80002'; +requires 'Moose'; requires 'Moose::Autobox'; requires 'MooseX::ClassAttribute'; requires 'MooseX::Types'; @@ -24,6 +25,9 @@ feature 'Catalyst::Helper support', feature 'Caching support', 'DBIx::Class::Cursor::Cached' => 0; +feature 'Replication support', + 'MooseX::AttributeHelpers' => 0; + if(-e 'MANIFEST.SKIP') { system("pod2text lib/Catalyst/Model/DBIC/Schema.pm > README"); } diff --git a/lib/Catalyst/Model/DBIC/Schema.pm b/lib/Catalyst/Model/DBIC/Schema.pm index 4c3b129..26485bc 100644 --- a/lib/Catalyst/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Model/DBIC/Schema.pm @@ -7,7 +7,7 @@ with 'MooseX::Object::Pluggable'; our $VERSION = '0.24'; -use Carp::Clan '^Catalyst::Model::DBIC::Schema::'; +use Carp::Clan '^Catalyst::Model::DBIC::Schema'; use Data::Dumper; use DBIx::Class (); use Scalar::Util 'reftype'; diff --git a/lib/Catalyst/Model/DBIC/Schema/Role/Caching.pm b/lib/Catalyst/Model/DBIC/Schema/Role/Caching.pm index b540e01..ba374b5 100644 --- a/lib/Catalyst/Model/DBIC/Schema/Role/Caching.pm +++ b/lib/Catalyst/Model/DBIC/Schema/Role/Caching.pm @@ -1,7 +1,7 @@ package Catalyst::Model::DBIC::Schema::Role::Caching; use Moose::Role; -use Carp::Clan '^Catalyst::Model::DBIC::Schema::'; +use Carp::Clan '^Catalyst::Model::DBIC::Schema'; use namespace::clean -except => 'meta'; diff --git a/lib/Catalyst/Model/DBIC/Schema/Role/Replicated.pm b/lib/Catalyst/Model/DBIC/Schema/Role/Replicated.pm index dfe5c8f..83eed56 100644 --- a/lib/Catalyst/Model/DBIC/Schema/Role/Replicated.pm +++ b/lib/Catalyst/Model/DBIC/Schema/Role/Replicated.pm @@ -2,7 +2,7 @@ package Catalyst::Model::DBIC::Schema::Role::Replicated; use Moose::Role; use Moose::Autobox; -use Carp::Clan '^Catalyst::Model::DBIC::Schema::'; +use Carp::Clan '^Catalyst::Model::DBIC::Schema'; use Catalyst::Model::DBIC::Schema::Types 'ConnectInfos'; @@ -23,17 +23,26 @@ L ['dbi:mysql:slave1', 'user', 'pass'], ['dbi:mysql:slave2', 'user', 'pass'], ['dbi:mysql:slave3', 'user', 'pass'], - ] + ], + balancer_args => { + master_read_weight => 0.3 + } }); =head1 DESCRIPTION -B -- requires some DBIC changes - Sets your storage_type to L and connects replicants provided in config. See that module for supported resultset attributes. +The default L is +C<::Random>. + +Sets the +L to +C<1> by default, meaning that you have the same chance of reading from master as +you do from replicants. Set to C<0> to turn off reads from master. + =head1 CONFIG PARAMETERS =head2 replicants @@ -61,13 +70,19 @@ after setup => sub { $self->storage_type('::DBI::Replicated'); } - $self->connect_info->{balancer_type} ||= '::Random'; + $self->connect_info->{balancer_type} ||= '::Random' + unless $self->connect_info->{balancer_type}; + + unless ($self->connect_info->{balancer_args} && + exists $self->connect_info->{balancer_args}{master_read_weight}) { + $self->connect_info->{balancer_args}{master_read_weight} = 1; + } }; after finalize => sub { my $self = shift; - $self->storage->connect_replicants(map [ $_ ], $self->replicants->flatten); + $self->storage->connect_replicants($self->replicants->flatten); }; =head1 SEE ALSO diff --git a/lib/Catalyst/Model/DBIC/Schema/Types.pm b/lib/Catalyst/Model/DBIC/Schema/Types.pm index 9b440a2..f206ecd 100644 --- a/lib/Catalyst/Model/DBIC/Schema/Types.pm +++ b/lib/Catalyst/Model/DBIC/Schema/Types.pm @@ -3,7 +3,7 @@ package Catalyst::Model::DBIC::Schema::Types; use MooseX::Types -declare => [qw/ConnectInfo ConnectInfos Replicants SchemaClass/]; -use Carp::Clan '^Catalyst::Model::DBIC::Schema::'; +use Carp::Clan '^Catalyst::Model::DBIC::Schema'; use MooseX::Types::Moose qw/ArrayRef HashRef Str ClassName/; use Scalar::Util 'reftype'; use List::MoreUtils 'all';