X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst.pm;h=0d05976003f91f2b197035f95332e13e6a935306;hp=0403b00c1bcc0aa086a87f29e2582c605bf34bb5;hb=341d40d18a7ac30a9731e6da4c90525fc13b75a3;hpb=364d7324169f5562a0e1405413005ba2ac656e88 diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 0403b00..0d05976 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -10,6 +10,7 @@ use Catalyst::Request::Upload; use Catalyst::Response; use Catalyst::Utils; use Catalyst::Controller; +use Catalyst::Runtime; use Devel::InnerPackage (); use File::stat; use Module::Pluggable::Object; @@ -59,7 +60,7 @@ __PACKAGE__->engine_class('Catalyst::Engine::CGI'); __PACKAGE__->request_class('Catalyst::Request'); __PACKAGE__->response_class('Catalyst::Response'); -our $VERSION = '5.6902'; +our $VERSION = $Catalyst::Runtime::VERSION; sub import { my ( $class, @arguments ) = @_; @@ -1801,23 +1802,29 @@ sub setup_actions { my $c = shift; $c->dispatcher->setup_actions( $c, @_ ) } =head2 $c->setup_components -Sets up components. +Sets up components. Specify a C config option to pass additional options +directly to L. To add additional search paths, specify a key named +C as an array reference. Items in the array beginning with C<::> will have the +application class name prepended to them. =cut sub setup_components { my $class = shift; + my @paths = qw( ::Controller ::C ::Model ::M ::View ::V ); + my $config = $class->config->{ setup_components }; + my $extra = delete $config->{ search_extra } || []; + + push @paths, @$extra; + my $locator = Module::Pluggable::Object->new( - search_path => [ - "${class}::Controller", "${class}::C", - "${class}::Model", "${class}::M", - "${class}::View", "${class}::V" - ], + search_path => [ map { s/^(?=::)/$class/; $_; } @paths ], + %$config ); for my $component ( sort { length $a <=> length $b } $locator->plugins ) { - require Class::Inspector->filename($component); + Catalyst::Utils::ensure_class_loaded( $component ); my $module = $class->setup_component( $component ); my %modules = (