[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