X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FScriptRunner.pm;h=caf16dc37e366f76cbf88e603c8a78136fb05ed7;hb=93534e4d63fd2b3600acede08843e297f4398085;hp=1e9626ea249215f2eb4abf4641214058b157787b;hpb=383c5be6711391bd114674e2dfb0b9e84a100a38;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/ScriptRunner.pm b/lib/Catalyst/ScriptRunner.pm index 1e9626e..caf16dc 100644 --- a/lib/Catalyst/ScriptRunner.pm +++ b/lib/Catalyst/ScriptRunner.pm @@ -4,6 +4,7 @@ use FindBin; use lib; use File::Spec; use Class::Load qw/ load_first_existing_class load_optional_class /; +use Catalyst::Utils; use namespace::autoclean -also => 'subclass_with_traits'; use Try::Tiny; @@ -34,7 +35,9 @@ sub subclass_with_traits { sub run { my ($self, $appclass, $scriptclass) = @_; - lib->import(File::Spec->catdir($FindBin::Bin, '..', 'lib')); + if (grep { -f File::Spec->catfile($FindBin::Bin, '..', $_) } Catalyst::Utils::dist_indicator_file_list()) { + lib->import(File::Spec->catdir($FindBin::Bin, '..', 'lib')); + } my $class = $self->find_script_class($appclass, $scriptclass); @@ -48,6 +51,7 @@ sub run { } __PACKAGE__->meta->make_immutable; +1; =head1 NAME @@ -61,7 +65,8 @@ Catalyst::ScriptRunner - The Catalyst Framework script runner =head1 DESCRIPTION -This class is responsible for loading and running scripts, either in the application specific namespace +This class is responsible for loading and running scripts, either in the +application specific namespace (e.g. C), or the Catalyst namespace (e.g. C). If your application contains a custom script, then it will be used in preference to the generic @@ -69,7 +74,8 @@ script, and is expected to sub-class the standard script. =head1 TRAIT LOADING -Catalyst will automatically load and apply roles to the scripts in your appliction. +Catalyst will automatically load and apply roles to the scripts in your +application. C will be loaded if present, and will be applied to B scripts. @@ -84,6 +90,16 @@ individually. Called with two parameters, the application class (e.g. MyApp) and the script class, (i.e. one of Server/FastCGI/CGI/Create/Test) +=head2 find_script_class ($appname, $script_name) + +Finds and loads the class for the script, trying the application specific +script first, and falling back to the generic script. Returns the script +which was loaded. + +=head2 find_script_traits ($appname, @try) + +Finds and loads a set of traits. Returns the list of traits which were loaded. + =head1 AUTHORS Catalyst Contributors, see Catalyst.pm