2009/4/29 Octavian Rasnita <[email protected]>

> Hi,
>
> In which components of a Catalyst app can I use __PACKAGE__->path_to()?
>
> I've seen that if I use in a MyApp/View/TT.pm module
>
> __PACKAGE__->config(
> COMPILE_DIR => __PACKAGE__->path_to('templates'),
> );
>
> it gives an error like:
>
> Can't locate object method "path_to" via package "MyApp::View::TT" at
> D:/web/MyApp/scr
> ipt/../lib/MyApp/View/TT.pm line 7.
>
> It works if I use MyApp->path_to() instead...
>
> Generally, it would be also very helpful if we could find which methods are
> offered by a certain $c object in a certain place. Is there a way for doing
> this?
>
> Thanks.
>
> --
> Octavian
>

Well, in config scenarios (this doesn't really answer your question) I opt
to use __path_to(...)__ -- as that is guaranteed to be expanded in a
documented fashion from what the documents say.

Having said that, it really just calls MyApp->path_to(...);

The difference is that ->path_to is a method on the application class, and
not a component class.

Every MyApp::(Controller|Model|View)::*.pm is essentially a
Catalyst::Component at the core.  If a method doesn't exist in
Catalyst::Component or in the subsequent Controller/Model/View base classes,
it won't be available in the __PACKAGE__ usage you were attempting above.

The actual application is an instance of the 'Catalyst' package, so you can
look at Catalyst::Runtime's Catalyst.pm for documentation on what works.

Hope that clears it up.

-Jay

PS., may be beneficial to read
http://search.cpan.org/~hkclark/Catalyst-Manual-5.7020/lib/Catalyst/Manual/ExtendingCatalyst.pod
_______________________________________________
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/

Reply via email to