Stop using deprecated Class::MOP::load_module
Dagfinn Ilmari Mannsåker [Thu, 28 Nov 2013 23:33:44 +0000 (23:33 +0000)]
Instead, use Module::Runtime and MooseX::Types::LoadableClass, as
appropriate.

Changes
Makefile.PL
lib/Catalyst/Helper/Model/DBIC/Schema.pm
lib/Catalyst/Model/DBIC/Schema.pm
lib/Catalyst/Model/DBIC/Schema/Types.pm
lib/Catalyst/TraitFor/Model/DBIC/Schema/Caching.pm
lib/Catalyst/TraitFor/Model/DBIC/Schema/Replicated.pm

diff --git a/Changes b/Changes
index c7a74d5..53949fe 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
 Revision history for Perl extension Catalyst::Model::DBIC::Schema
 
         - Don't ship MYMETA.* files (RT#91808)
+        - Stop using deprecated Class::MOP::load_module
 
 0.61 2013-06-19 12:48:34
         - Fix test failure caused by hash randomisation in perl 5.17 (RT#82917)
index ee07a89..7212c4c 100644 (file)
@@ -10,6 +10,8 @@ requires 'CatalystX::Component::Traits' => '0.14';
 
 requires 'Moose' => '1.12';
 requires 'MooseX::Types';
+requires 'MooseX::Types::LoadableClass' => 0.009;
+requires 'Module::Runtime' => '0.012';
 requires 'namespace::autoclean' => 0.09;
 requires 'Carp::Clan';
 requires 'List::MoreUtils';
index 99fba19..396af50 100644 (file)
@@ -18,6 +18,7 @@ use Scalar::Util 'looks_like_number';
 use File::Find 'finddepth';
 use Try::Tiny;
 use Cwd 'getcwd';
+use Module::Runtime 'use_module';
 
 =head1 NAME
 
@@ -312,7 +313,7 @@ sub _read_loader_args {
     }
 
     my $have_loader = try {
-        Class::MOP::load_class('DBIx::Class::Schema::Loader::Base');
+        use_module('DBIx::Class::Schema::Loader::Base');
         1;
     };
 
@@ -477,7 +478,7 @@ sub _build_result_namespace {
         File::Spec->catfile($self->helper->{base}, 'lib', @schema_parts) . '.pm';
 
     if (not -f $schema_pm) {
-        eval { Class::MOP::load_class('DBIx::Class::Schema::Loader') };
+        eval { use_module('DBIx::Class::Schema::Loader') };
 
         return 'Result' if $@;
 
@@ -623,7 +624,7 @@ sub _gen_static_schema {
     my $schema_dir = File::Spec->catfile($helper->{base}, 'lib');
 
     try {
-        Class::MOP::load_class('DBIx::Class::Schema::Loader')
+        use_module('DBIx::Class::Schema::Loader')
     }
     catch {
         die "Cannot load DBIx::Class::Schema::Loader: $_";
@@ -642,7 +643,7 @@ sub _gen_static_schema {
     require lib;
     lib->import($schema_dir);
 
-    Class::MOP::load_class($self->schema_class);
+    use_module($self->schema_class);
 
     my @sources = $self->schema_class->sources;
 
index 62ab882..161021c 100644 (file)
@@ -12,11 +12,13 @@ use namespace::autoclean;
 use Carp::Clan '^Catalyst::Model::DBIC::Schema';
 use Data::Dumper;
 use DBIx::Class ();
+use Module::Runtime qw/use_module/;
 
 use Catalyst::Model::DBIC::Schema::Types
-    qw/ConnectInfo LoadedClass SchemaClass Schema/;
+    qw/ConnectInfo SchemaClass Schema/;
 
-use MooseX::Types::Moose qw/ArrayRef Str ClassName Undef/;
+use MooseX::Types::Moose qw/Str/;
+use MooseX::Types::LoadableClass qw/LoadableClass/;
 
 =head1 NAME
 
@@ -417,7 +419,6 @@ See L<DBIx::Class::Storage> and L<DBIx::Class::Storage::DBI>.
 has schema_class => (
     is => 'ro',
     isa => SchemaClass,
-    coerce => 1,
     required => 1
 );
 
@@ -434,9 +435,8 @@ has model_name => (
 
 has _default_cursor_class => (
     is => 'ro',
-    isa => LoadedClass,
+    isa => LoadableClass,
     default => 'DBIx::Class::Storage::DBI::Cursor',
-    coerce => 1
 );
 
 has schema => (is => 'rw', isa => Schema);
@@ -467,7 +467,7 @@ sub BUILD {
     }
 
     if (exists $self->connect_info->{cursor_class}) {
-        eval { Class::MOP::load_class($self->connect_info->{cursor_class}) }
+        eval { use_module($self->connect_info->{cursor_class}) }
             or croak "invalid connect_info: Cannot load your cursor_class"
         . " ".$self->connect_info->{cursor_class}.": $@";
     }
index 44aee6b..0356482 100644 (file)
@@ -2,30 +2,22 @@ package  # hide from PAUSE
     Catalyst::Model::DBIC::Schema::Types;
 
 use MooseX::Types -declare => [qw/
-    ConnectInfo ConnectInfos Replicants SchemaClass LoadedClass CreateOption
+    ConnectInfo ConnectInfos Replicants SchemaClass CreateOption
     Schema
 /];
 
 use Carp::Clan '^Catalyst::Model::DBIC::Schema';
 use MooseX::Types::Moose qw/ArrayRef HashRef CodeRef Str ClassName/;
+use MooseX::Types::LoadableClass qw/LoadableClass/;
 use Scalar::Util 'reftype';
 use List::MoreUtils 'all';
 
 use namespace::clean -except => 'meta';
 
-subtype LoadedClass,
-    as ClassName;
-
-coerce LoadedClass,
-    from Str, # N.B. deliberate paranoia against $_ clobbering below
-    via { my $classname = $_; Class::MOP::load_class($classname); $classname };
-
 subtype SchemaClass,
-    as ClassName,
+    as LoadableClass,
     where { $_->isa('DBIx::Class::Schema') };
 
-SchemaClass->coercion(LoadedClass->coercion);
-
 class_type Schema, { class => 'DBIx::Class::Schema' };
 
 subtype ConnectInfo,
index e70de3f..f1d5162 100644 (file)
@@ -4,6 +4,7 @@ use namespace::autoclean;
 use Moose::Role;
 use Carp::Clan '^Catalyst::Model::DBIC::Schema';
 use MooseX::Types::Moose 'Int';
+use Module::Runtime 'use_module';
 
 =head1 NAME
 
@@ -63,7 +64,7 @@ after setup => sub {
     my $cursor_class = $self->connect_info->{cursor_class}
         || 'DBIx::Class::Cursor::Cached';
 
-    unless (eval { Class::MOP::load_class($cursor_class) }) {
+    unless (eval { use_module($cursor_class) }) {
         carp "Caching disabled, cannot load cursor class"
             . " $cursor_class: $@";
         return;
index 73317d8..a978d1d 100644 (file)
@@ -4,9 +4,11 @@ use namespace::autoclean;
 use Moose::Role;
 use Carp::Clan '^Catalyst::Model::DBIC::Schema';
 
-use Catalyst::Model::DBIC::Schema::Types qw/ConnectInfos LoadedClass/;
+use Catalyst::Model::DBIC::Schema::Types qw/ConnectInfos LoadableClass/;
 use MooseX::Types::Moose qw/Str HashRef/;
 
+use Module::Runtime qw/use_module/;
+
 =head1 NAME
 
 Catalyst::TraitFor::Model::DBIC::Schema::Replicated - Replicated storage support for
@@ -74,7 +76,7 @@ has replicants => (
     is => 'ro', isa => ConnectInfos, coerce => 1, required => 1
 );
 
-has pool_type => (is => 'ro', isa => LoadedClass);
+has pool_type => (is => 'ro', isa => LoadableClass);
 has pool_args => (is => 'ro', isa => HashRef);
 has balancer_type => (is => 'ro', isa => Str);
 has balancer_args => (is => 'ro', isa => HashRef);
@@ -88,7 +90,7 @@ after setup => sub {
             "DBIx::Class::Storage$storage_type"
             : $storage_type;
 
-        Class::MOP::load_class($class);
+        use_module($class);
 
         croak "This storage_type cannot be used with replication"
             unless $class->isa('DBIx::Class::Storage::DBI::Replicated');