X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FComponent.pm;h=2decf10dc9f7896882a4eef209da6f6a84a8a483;hb=2efad04b4d6590ecf00566d698e94622198909aa;hp=f69707207af3606d57ecf97d0166d2dc4c384750;hpb=536bee890cf24e0e4bcda7562e7b70cc03ca0620;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Component.pm b/lib/Catalyst/Component.pm index f697072..2decf10 100644 --- a/lib/Catalyst/Component.pm +++ b/lib/Catalyst/Component.pm @@ -8,7 +8,6 @@ use Class::C3::Adopt::NEXT; use MRO::Compat; use mro 'c3'; use Scalar::Util 'blessed'; -use Storable 'dclone'; use namespace::clean -except => 'meta'; with 'MooseX::Emulate::Class::Accessor::Fast'; @@ -117,7 +116,9 @@ sub config { my $class = blessed($self) || $self; my $meta = Class::MOP::get_metaclass_by_name($class); unless ($meta->has_package_symbol('$_config')) { - $self->_config( dclone $config ); + # Call merge_hashes to ensure we deep copy the parent + # config onto the subclass + $self->_config( Catalyst::Utils::merge_hashes($config, {}) ); } } return $self->_config; @@ -156,9 +157,10 @@ If this method is present (as it is on all Catalyst::Component subclasses, it is called by Catalyst during setup_components with the application class as $c and any config entry on the application for this component (for example, in the case of MyApp::Controller::Foo this would be -MyApp->config->{'Controller::Foo'}). The arguments are expected to be a -hashref and are merged with the __PACKAGE__->config hashref before calling -->new to instantiate the component. +C<< MyApp->config('Controller::Foo' => \%conf >>). +The arguments are expected to be a hashref and are merged with the +C<< __PACKAGE__->config >> hashref before calling C<< ->new >> +to instantiate the component. You can override it in your components to do custom instantiation, using something like this: