From: Gareth Kirwan Date: Thu, 4 Sep 2014 10:06:43 +0000 (+0100) Subject: Make compose_namespace and install_model_shortcut configurable. X-Git-Tag: v0.65~1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Model-DBIC-Schema.git;a=commitdiff_plain;h=2a5644e8ea19e2db4136eaf8e458030d596071c4 Make compose_namespace and install_model_shortcut configurable. This is a long running orphaned topic branch, thrown into mess by rkitover's switch to defaulting them to off. Instead, we're making them configurable, without changing the default. Next step is to deprecate and warn on them, and then change the default. That can happen over the next year, or not at all if there's no pressure for it. --- diff --git a/Changes b/Changes index 1c02d77..055471a 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,9 @@ Revision history for Perl extension Catalyst::Model::DBIC::Schema -0.64 2014-07-22 23:0:00 +0.65 2014-08-04 11:00:00 + - Make compose_namespaces and install model shortcuts optional + +0.64 2014-07-22 23:00:00 - Fix Replicated trait that got busted when someone assumed Module::Runtime was a drop in replacement for Class::MOP::load_class diff --git a/lib/Catalyst/Helper/Model/DBIC/Schema.pm b/lib/Catalyst/Helper/Model/DBIC/Schema.pm index f0178d0..f50b2e5 100644 --- a/lib/Catalyst/Helper/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Helper/Model/DBIC/Schema.pm @@ -4,7 +4,7 @@ use namespace::autoclean; use Moose; no warnings 'uninitialized'; -our $VERSION = '0.63'; +our $VERSION = '0.65'; $VERSION = eval $VERSION; use Carp; diff --git a/lib/Catalyst/Model/DBIC/Schema.pm b/lib/Catalyst/Model/DBIC/Schema.pm index 8b63475..0db268b 100644 --- a/lib/Catalyst/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Model/DBIC/Schema.pm @@ -5,7 +5,7 @@ use mro 'c3'; extends 'Catalyst::Model'; with 'CatalystX::Component::Traits'; -our $VERSION = '0.64'; +our $VERSION = '0.65'; $VERSION = eval $VERSION; use namespace::autoclean; @@ -306,6 +306,17 @@ Traits that come with the distribution: =back +=head2 compose_namespaces + +This model calls L by default to +install classes into the model namespaces. You can turn that off by +setting this attribute to false. Default is true. + +=head2 install_model_shortcuts + +If you don't want shortcut models so you can do e.g. C<< $c->model('DB::Book') +>> set this attribute to false, Default is true. + =head2 storage_type Allows the use of a different C than what is set in your @@ -376,10 +387,13 @@ schema->resultset, schema->source, and schema->class. =head2 composed_schema Accessor which returns the composed schema, which has no connection info, -which was used in constructing the C above. Useful for creating +which was used in constructing the L. Useful for creating new connections based on the same schema/model. There are direct shortcuts from the model object for composed_schema->clone and composed_schema->connect +If L is not true, L is equivalent to +C<< $model->schema_class->clone >>. + =head2 clone Shortcut for ->composed_schema->clone @@ -422,6 +436,10 @@ has schema_class => ( required => 1 ); +has compose_namespaces => (is => 'ro', default => sub { 1 }); + +has install_model_shortcuts => (is => 'ro', default => sub { 1 }); + has storage_type => (is => 'rw', isa => Str); has connect_info => (is => 'rw', isa => ConnectInfo, coerce => 1); @@ -476,8 +494,13 @@ sub BUILD { my $is_installed = defined $self->composed_schema; - $self->composed_schema($schema_class->compose_namespace($class)) - unless $is_installed; + if (not $is_installed) { + $self->composed_schema($self->compose_namespaces ? + $schema_class->compose_namespace($class) + : + $schema_class->clone + ); + } $self->schema($self->composed_schema->clone) unless $self->schema; @@ -487,7 +510,9 @@ sub BUILD { $self->schema->connection($self->connect_info); - $self->_install_rs_models unless $is_installed; + if ((not $is_installed) && $self->install_model_shortcuts) { + $self->_install_rs_models; + } } sub clone { shift->composed_schema->clone(@_); }