Get Class::Load to do this for us
Tomas Doran [Fri, 21 Oct 2011 16:06:22 +0000 (10:06 -0600)]
Makefile.PL
lib/Catalyst/ScriptRunner.pm

index a3a25a4..71b4f1d 100644 (file)
@@ -18,6 +18,7 @@ requires 'namespace::autoclean' => '0.09';
 requires 'namespace::clean' => '0.13';
 requires 'B::Hooks::EndOfScope' => '0.08';
 requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00903';
+requires 'Class::Load' => '0.08';
 requires 'Class::MOP' => '0.95';
 requires 'Data::OptList';
 requires 'Moose' => '1.03';
index 26ca0fd..3797a13 100644 (file)
@@ -3,40 +3,19 @@ use Moose;
 use FindBin;
 use lib;
 use File::Spec;
+use Class::Load qw/ load_first_existing_class load_optional_class /;
 use namespace::autoclean -also => 'subclass_with_traits';
 use Try::Tiny;
 
 sub find_script_class {
     my ($self, $app, $script) = @_;
-    my $class = "${app}::Script::${script}";
-
-    try {
-        Class::MOP::load_class($class);
-    }
-    catch {
-        confess $_ unless /Can't locate/;
-        $class = "Catalyst::Script::$script";
-    };
-
-    Class::MOP::load_class($class);
-    return $class;
+    return load_first_existing_class("${app}::Script::${script}", "Catalyst::Script::$script");
 }
 
 sub find_script_traits {
     my ($self, @try) = @_;
 
-    my @traits;
-    for my $try (@try) {
-        try {
-            Class::MOP::load_class($try);
-            push @traits, $try;
-        }
-        catch {
-            confess $_ unless /^Can't locate/;
-        };
-    }
-
-    return @traits;
+    return grep { load_optional_class($_) } @try;
 }
 
 sub subclass_with_traits {