From: Tomas Doran Date: Fri, 21 Oct 2011 16:06:22 +0000 (-0600) Subject: Get Class::Load to do this for us X-Git-Tag: 5.90005~4^2~1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=725afced1f1ab67a6e54849325368ee61715cc1f Get Class::Load to do this for us --- diff --git a/Makefile.PL b/Makefile.PL index a3a25a4..71b4f1d 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -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'; diff --git a/lib/Catalyst/ScriptRunner.pm b/lib/Catalyst/ScriptRunner.pm index 26ca0fd..3797a13 100644 --- a/lib/Catalyst/ScriptRunner.pm +++ b/lib/Catalyst/ScriptRunner.pm @@ -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 {