Re: [Catalyst] Accessing action URIs outside of Catalyst app
On 3 Jan 2007, at 20:21, Brian Kirkbride wrote: Hello all, Is there a best practice way to maintain a map of URLs used in a Catalyst application. To clarify, I need to map actions to URLs outside of Catalyst (CRON jobs, Emailers, etc) and won't have access to $c-uri_for or the $c-dispatcher. If you need to do this, your design is broken. Step back. Explain what you're trying to achieve. -- Matt S Trout, Technical Director, Shadowcat Systems Ltd. Offering custom development, consultancy and support contracts for Catalyst, DBIx::Class and BAST. Contact mst (at) shadowcatsystems.co.uk for details. + Help us build a better perl ORM: http://dbix- class.shadowcatsystems.co.uk/ + ___ List: Catalyst@lists.rawmode.org Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/ Dev site: http://dev.catalyst.perl.org/
Re: [Catalyst] Accessing action URIs outside of Catalyst app
Matt S Trout wrote: On 3 Jan 2007, at 20:21, Brian Kirkbride wrote: Hello all, Is there a best practice way to maintain a map of URLs used in a Catalyst application. To clarify, I need to map actions to URLs outside of Catalyst (CRON jobs, Emailers, etc) and won't have access to $c-uri_for or the $c-dispatcher. If you need to do this, your design is broken. Perhaps, but I ascribe that to it being in transition :) Step back. Explain what you're trying to achieve. Automated emails sent out to users need to provide them with a list of different webapp URLs. These actions are asynchronous from the webapp itself. I have a number of scripts (a few are legacy dinosaurs) that need webapp URLs as well. If I choose to change /cancel to /account/cancel later on, I'd like to do it in one place. I realize that without parsing the controllers' actions I can't expect the outside code to get those URLs. I would also rather not use MyApp.pm in simple scripts that only need my model logic and a URL, and in some cases I can't. My hope was to configure the URL mapping in a config file, which could be accessed by my webapp and outside scripts. Something like this: sub cancel : Args(1) : Path($urlmap-{account_cancel}) { # action } This, of course, does not work because attributes do not evaluate their arguments. Perhaps my solution is to subclass the Dispatcher to allow for: sub cancel : Args(1) : FromURLMap('account_cancel') { # action } That wouldn't be too hard. Thoughts? Best, Brian ___ List: Catalyst@lists.rawmode.org Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/ Dev site: http://dev.catalyst.perl.org/
Re: [Catalyst] Accessing action URIs outside of Catalyst app
On 8 Jan 2007, at 16:59, Brian Kirkbride wrote: Matt S Trout wrote: On 3 Jan 2007, at 20:21, Brian Kirkbride wrote: Hello all, Is there a best practice way to maintain a map of URLs used in a Catalyst application. To clarify, I need to map actions to URLs outside of Catalyst (CRON jobs, Emailers, etc) and won't have access to $c-uri_for or the $c-dispatcher. If you need to do this, your design is broken. Perhaps, but I ascribe that to it being in transition :) Step back. Explain what you're trying to achieve. Automated emails sent out to users need to provide them with a list of different webapp URLs. These actions are asynchronous from the webapp itself. I have a number of scripts (a few are legacy dinosaurs) that need webapp URLs as well. If I choose to change /cancel to /account/cancel later on, I'd like to do it in one place. I realize that without parsing the controllers' actions I can't expect the outside code to get those URLs. I would also rather not use MyApp.pm in simple scripts that only need my model logic and a URL, and in some cases I can't. Explain can't in a form that doesn't make me feel you've just completely missed the point of achieve and told me what you're trying (failing) to implement :) My hope was to configure the URL mapping in a config file, which could be accessed by my webapp and outside scripts. Something like this: sub cancel : Args(1) : Path($urlmap-{account_cancel}) { # action } This, of course, does not work because attributes do not evaluate their arguments. Perhaps my solution is to subclass the Dispatcher to allow for: sub cancel : Args(1) : FromURLMap('account_cancel') { # action } That wouldn't be too hard. Thoughts? Yeah, Catalyst already has an implementation for this - package MyApp::Controller::Foo; ... sub cancel :Action :Args(1) { ... } then in myapp.conf Controller Foo Action cancel Path /cancel /Action /Controller You can apply any attribute like that, although setting Args or similar from the config file might be considered unwise. -- Matt S Trout, Technical Director, Shadowcat Systems Ltd. Offering custom development, consultancy and support contracts for Catalyst, DBIx::Class and BAST. Contact mst (at) shadowcatsystems.co.uk for details. + Help us build a better perl ORM: http://dbix- class.shadowcatsystems.co.uk/ + ___ List: Catalyst@lists.rawmode.org Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/ Dev site: http://dev.catalyst.perl.org/
Re: [Catalyst] Accessing action URIs outside of Catalyst app
On 8 Jan 2007, at 18:12, Brian Kirkbride wrote: Matt S Trout wrote: On 8 Jan 2007, at 16:59, Brian Kirkbride wrote: Matt S Trout wrote: On 3 Jan 2007, at 20:21, Brian Kirkbride wrote: Hello all, Is there a best practice way to maintain a map of URLs used in a Catalyst application. To clarify, I need to map actions to URLs outside of Catalyst (CRON jobs, Emailers, etc) and won't have access to $c-uri_for or the $c-dispatcher. If you need to do this, your design is broken. Perhaps, but I ascribe that to it being in transition :) Step back. Explain what you're trying to achieve. Automated emails sent out to users need to provide them with a list of different webapp URLs. These actions are asynchronous from the webapp itself. I have a number of scripts (a few are legacy dinosaurs) that need webapp URLs as well. If I choose to change /cancel to /account/cancel later on, I'd like to do it in one place. I realize that without parsing the controllers' actions I can't expect the outside code to get those URLs. I would also rather not use MyApp.pm in simple scripts that only need my model logic and a URL, and in some cases I can't. Explain can't in a form that doesn't make me feel you've just completely missed the point of achieve and told me what you're trying (failing) to implement :) I'd like to routinely send an email to a user telling them to pay for something, including a link to a page in my webapp allowing them to do so. I just use Catalyst::Engine::JobQueue::POE (or in older apps a script that's the moral equivalent) and uri_for for that. My hope was to configure the URL mapping in a config file, which could be accessed by my webapp and outside scripts. Something like this: sub cancel : Args(1) : Path($urlmap-{account_cancel}) { # action } This, of course, does not work because attributes do not evaluate their arguments. Perhaps my solution is to subclass the Dispatcher to allow for: sub cancel : Args(1) : FromURLMap('account_cancel') { # action } That wouldn't be too hard. Thoughts? Yeah, Catalyst already has an implementation for this - package MyApp::Controller::Foo; ... sub cancel :Action :Args(1) { ... } then in myapp.conf Controller Foo Action cancel Path /cancel /Action /Controller You can apply any attribute like that, although setting Args or similar from the config file might be considered unwise. Perfect, I had missed that this type of URL to action mapping was possible with the :Action attribute. I have no interest in placing Args or other attributes in the config. This should work fine for me. :Action isn't -required-, you just need at least one attribute. :Action is the long-standing traditional no-op attribute (:Private isn't valid with any other attrs) so I tend to add it to all of them so if I delete the :Args for whatever reason or don't have one in the first place things don't go batshit on me :) -- Matt S Trout, Technical Director, Shadowcat Systems Ltd. Offering custom development, consultancy and support contracts for Catalyst, DBIx::Class and BAST. Contact mst (at) shadowcatsystems.co.uk for details. + Help us build a better perl ORM: http://dbix- class.shadowcatsystems.co.uk/ + ___ List: Catalyst@lists.rawmode.org Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/ Dev site: http://dev.catalyst.perl.org/
Re: [Catalyst] Accessing action URIs outside of Catalyst app
On Mon, Jan 08, 2007 at 12:12:07PM -0600, Brian Kirkbride wrote: I'd like to routinely send an email to a user telling them to pay for something, including a link to a page in my webapp allowing them to do so. C::P::Scheduler? That's what I use so I can use c.uri_for() in my email templates. -- Bill Moseley [EMAIL PROTECTED] ___ List: Catalyst@lists.rawmode.org Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/ Dev site: http://dev.catalyst.perl.org/