Oleg Pronin wrote:
The problem is that on creation of MyApp object in Catalyst::prepare, i
get MyApp object merged with (!!!) my config.
The prepare method calls:
my $c = $class->context_class->new({});
So I don't see where the config is coming from.
MyApp->new does ok until this line of code
Catalyst::CODE(0x80d2d81f8)(/usr/local/lib/perl5/site_perl/5.10.0/Catalyst.pm:1110):
1110: $meta->make_immutable(replace_constructor => 1) unless
$meta->is_immutable;
After that MyApp->new is a mix of correct object and config hash which
breaks my application :(
Erm, calling the new method will not call this code..
This code _creates_ the new method for you on MyApp, but it is only run
once.
More details:
when executing MyApp->new the problem is at
Catalyst::Controller::BUILD
it receives $args - somewhy it is my config :-)
Then goes MooseX::Emulate::Class::Accessor::Fast::CODE which also
receives %args which is my config and merges it into MyApp object:
87: my @extra = grep { !exists($self->{$_}) } keys %args;
88: @{$sel...@extra} = @ar...@extra};
What's the problem and how to fix it?
I don't know how this ever worked for you then.
In 5.7 you get exactly the same behavior, as
MyApp isa Catalyst, which isa Catalyst::Component.
The new method in Catalyst::Component delegates to the new method in
Class::Accessor::Fast, which takes any parameters passed into the new
method, turns them into a hashref and blesses it. This is exactly the
same behavior that you're seeing, and the code you highlighted above is
what provides this backwards compatibility.
You do obviously have a problem however, so I'm not just trying to brush
you off here.
Could you extract the feature(s) which cause your application to break
into a minimal TestApp you can show us so that we can get down to fixing
it, without having to wade through loads of code and/or understand the
rest of your app?
Cheers
t0m
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/