From: Justin Hunter Date: Sat, 24 Jul 2010 21:40:41 +0000 (+0000) Subject: add setup_config method to instantiate the B::B container and get a $config from it X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=e115cab24e39895e23cd9171946fa94b016e9c9f add setup_config method to instantiate the B::B container and get a $config from it --- diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index afeb044..f6296f5 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -1109,6 +1109,7 @@ sub setup { } } + $class->setup_config(); $class->setup_home( delete $flags->{home} ); $class->setup_log( delete $flags->{log} ); @@ -2411,6 +2412,30 @@ Sets up actions for a component. sub setup_actions { my $c = shift; $c->dispatcher->setup_actions( $c, @_ ) } +=head2 $c->setup_config + +=cut + +sub setup_config { + my $class = shift; + + my %args = %{$class->config || {} }; + my @container_classes = qw/MyApp::Container Catalyst::Container/; + unshift @container_classes, delete $args{container_class} if exists $args{container_class}; + + my $container_class = Class::MOP::load_first_existing_class(@container_classes); + + my $config = $container_class->new( %args, name => "$class" )->fetch('config')->get; + $class->config($config); + $class->finalize_config; # back-compat +} + +=head $c->finalize_config + +=cut + +sub finalize_config { } + =head2 $c->setup_components This method is called internally to set up the application's components.