[Catalyst]
Action subs executed as first loaded component, not MyApp
Michael Reece
mreece at sacbee.com
Tue Apr 19 01:16:43 CEST 2005
On 4/18/05 3:47 PM, "Michael Reece" <mreece at sacbee.com> wrote:
> (I also have a problem where all my actions are being called with first arg
> of MyApp::C::CRUD -- presumably the first match for ^MyApp in the loaded
> components? -- instead of MyApp ..)
Further debugging shows this to be the case.
If I have no components, then in Engine.pm's sub execute,
$class = $c->comp($class) || $class;
$class will be MyApp, because $c->comp fails to find anything.
But if I have a component, such as MyApp::V::Mason, then $class becomes
MyApp::V::Mason, and 'sub default' is called with that as first arg (aka
$self).
==========
> catalyst.pl MyApp
Created "MyApp"
...etc
> cd MyApp/
> vi lib/MyApp.pm
[ insert at start of sub default: warn "default called with args: @_"; ]
> ./script/server.pl
Now hit http://localhost:3000/ and you get:
default called with args: MyApp MyApp=HASH(0x874c858) at
/home/mreece/tmp/MyApp/script/../lib/MyApp.pm line 16.
> ./script/create.pl view Mason Mason
created "/home/mreece/tmp/MyApp/script/../lib/MyApp/V/Mason.pm"
created "/home/mreece/tmp/MyApp/script/../t/v/mason.t"
> ./script/server.pl
Now hit http://localhost:3000/ and you get:
default called with args: MyApp::V::Mason=HASH(0x86f1cdc)
MyApp=HASH(0x893ddbc) at /home/mreece/tmp/MyApp/script/../lib/MyApp.pm line
16.
More information about the Catalyst
mailing list