X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FHTTP%2FRestarter.pm;h=bae57b18cac9443027dc27732c7bd2d983efbf47;hp=0fffaf0fb4cc1156446378001feee8e750ae7c0a;hb=4f03bb77eaf3b07fac86f455bf688c2b6f1d5273;hpb=c03163b837135f3bf3d65380e90b4a68bcc38099 diff --git a/lib/Catalyst/Engine/HTTP/Restarter.pm b/lib/Catalyst/Engine/HTTP/Restarter.pm index 0fffaf0..bae57b1 100644 --- a/lib/Catalyst/Engine/HTTP/Restarter.pm +++ b/lib/Catalyst/Engine/HTTP/Restarter.pm @@ -20,9 +20,11 @@ around run => sub { close STDIN; close STDOUT; + # Avoid "Setting config after setup" error restarting MyApp.pm + $class->setup_finished(0); # Best effort if we can't trap compiles.. $self->_make_components_mutable($class) - if !Catalyst::Engine::HTTP::Restarter::Watcher::DETECT_PACKAGE_COMPILATION(); + if !Catalyst::Engine::HTTP::Restarter::Watcher::DETECT_PACKAGE_COMPILATION; my $watcher = Catalyst::Engine::HTTP::Restarter::Watcher->new( directory => ( @@ -81,9 +83,13 @@ around run => sub { sub _make_components_mutable { my ($self, $class) = @_; - my @metas = map { find_meta($_) } ($class, map { blessed($_) } values %{ $class->components }); + my @metas = grep { defined($_) } + map { find_meta($_) } + ($class, map { blessed($_) } + values %{ $class->components }); foreach my $meta (@metas) { + # Paranoia unneeded, all component metaclasses should have immutable $meta->make_mutable if $meta->is_immutable; } }