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/
