Brad,
On Thu, Mar 4, 2010 at 9:04 AM, Brad Van Sickle <bvansick...@gmail.com> wrote: > All of that can be done with mod rewrite. A (sanitized) example of a > rewrite/proxy rule I have working in an existing application > > RewriteRule Runmode/([0-9]+)/([a-zA-Z0-9]+) > http://server/perl/instance.pl?rm=Runmode&PARAM1=$1&PARAM2=$2 [P,L] > > Which takes the URI "Runmode/20/Data" and turns it into > "instance.pl?rm=Runmode&PARAM1=20&PARAM2=Data" > Do us all a favor... please write up a short tute on this (and on mod_proxy) and put it up on the wiki and highlight it in bold colors. You are absolutely correct, the above will work, and work well. I think CAD helps when you have multiple modules, and you want to call runmodes in them. In my case, I have only a single module with half a dozen runmodes, so I will go your way. By the way, one does need to have a rule for every runmode, so it doesn't matter whether one uses Apache or CAD to do it... you will need a rule for every rm anyway. By the way, here is an interesting post by Sukrieh (Dancer's creator) on Dancer's load response under hundreds of runmodes... http://www.sukria.net/fr/archives/2010/03/03/about-performances/ I will never run into such a problem (can't imagine more than a dozen runmodes, max, in my app). Anyway, thanks for your insight, Brad. > By making use of optional parameters and regular expressions I find it > to be very powerful and extremely easy. The fact that I can use > MOD_PROXY in conjuction with this for load balancing, is also awesome. > The only downside is that I have to create one of these rules in > httpd.conf or in .htaccess for each "pretty" URL, but I don't see a way > of getting around. > > Maybe CGI::Application::Dispatch or CAP::Routes is a better/more > powerful way to do this... but I don't see how. Which is why I'm asking. > > > > P Kishor wrote: >> On Thu, Mar 4, 2010 at 8:25 AM, Brad Van Sickle <bvansick...@gmail.com> >> wrote: >> >>> Tangential discussion on this... but what is the value in using >>> dispatching modules like CAP::Routes and CGI::Application::Dispatch? >>> >>> I've looked at them in the past, and I've heard it mentioned many times >>> that they are wonderfully useful.. but I've never fully understood why. >>> >>> Currently I'm using mod_rewrite to implement pretty URL's and mapping >>> them to individual instance scripts. As I understand it, dispatch >>> modules do basically the same thing, except they move the config out of >>> .htacces/httpd.conf and will allow me to get rid of the instance scripts >>> (which I personally don't consider a HUGE benefit) >>> >>> I think I'm missing something here. Can someone educate me? >>> >> >> actually, perhaps you can educate me... I too use mod_rewrite, which >> basically takes >> >> /server/foo/id/32?action=edit >> >> and converts it to >> >> /server/index.cgi?page=foo&id=32&action=edit >> >> and so on. >> >> Now, we need to call the 'edit' runmode with the various params as >> above. This is where CAD and CAPRoutes and the ilk come in. Without >> those, how do you accomplish that? >> >> The painful aspect, to me, is that a lot of work is required to get clean >> URIs. >> >> Step 1. Create the route table >> Step 2. Create the RewriteRules >> >> This is where my recent experience with Dancer was rather lovely. >> Clean URIs from the get go. And then I realized why -- I wasn't using >> Apache at all. I was simply firing up dance.pl which was acting as the >> webserver and also interpreting the URIs for me. Added side-effect -- >> since dance.pl was permanently running, it was noticeably faster than >> Apache restarting Perl and DBI and stuff. But, more than anything, it >> was clean URIs from get-go. >> >> >> >> >>> P Kishor wrote: >>> >>>> On Thu, Mar 4, 2010 at 3:33 AM, Mike Tonks <fluffym...@googlemail.com> >>>> wrote: >>>> >>>> >>>>> I am using CAP::Routes and it works very well for me. >>>>> >>>>> >>>>> >>>> Thanks for the report. This is good to know, because this proves I >>>> must be doing something wrong, even though I can't figure out what. I >>>> am not using ScriptAlias, but am using .htaccess with RewriteConds and >>>> RewriteRule. >>>> >>>> By the way, could you please check if $self->route_dbg works for you? >>>> >>>> My one thought is -- perhaps I am not doing anything wrong, but that >>>> it is my combination of various plugins. I recall (from a while back), >>>> I think I had identified some clash between CAPRoutes and >>>> CAPAuthentication, but it could be some other plug in well that seems >>>> to redefine the runmodes. >>>> >>>> >>>> >>>> >>>> >>>>> First off, I am using ScriptAlias to map the url and hide the script >>>>> name it the url: >>>>> >>>>> So I have a few lines in my /etc/apache2/sites-available/app virtual host >>>>> file: >>>>> >>>>> ScriptAlias /contacts /var/www/app/cgi-bin/contacts.cgi >>>>> ScriptAlias /jobs /var/www/app/cgi-bin/jobs.cgi >>>>> ScriptAlias /titles /var/www/app/cgi-bin/titles.cgi >>>>> >>>>> >>>>> Then in contacts.cgi: >>>>> >>>>> #!/usr/bin/perl -w >>>>> >>>>> use strict; >>>>> >>>>> use App::Contacts; >>>>> >>>>> my $app = App::Contacts->new(); >>>>> >>>>> $app->run(); >>>>> >>>>> and finally the run modes in Contacts.pm >>>>> >>>>> >>>>> sub setup >>>>> { >>>>> my $self = shift; >>>>> >>>>> $self->start_mode('view'); >>>>> >>>>> $self->routes_root(''); >>>>> >>>>> $self->routes([ >>>>> '' >>>>> => 'view' , >>>>> '/guest' >>>>> => 'guest', >>>>> '/staff/edit/:id' >>>>> => 'edit_staff', >>>>> '/staff/process/:id' => >>>>> 'edit_staff_process', >>>>> '/:id/address/new' >>>>> => 'edit_address', >>>>> '/:id/address/:id2' => >>>>> 'edit_address', >>>>> '/:id/address/process/:id2' => >>>>> 'edit_address_process', >>>>> '/:id/email/process/:id2' => >>>>> 'edit_email_process', >>>>> '/:id/email/new' >>>>> => 'edit_email', >>>>> '/:id/email/:id2' >>>>> => 'edit_email', >>>>> '/:id' >>>>> => 'view' , >>>>> ]); >>>>> >>>>> etc. >>>>> >>>>> Then my urls are e.g. >>>>> >>>>> http://mysite/contacts - default page >>>>> http://mysite/contacts/1234 - view a specific contact record >>>>> http://mysite/contacts/1234/address/new - add address to a contact record >>>>> >>>>> Note that I haven't got the /contacts/ bit in my routes_root - it >>>>> doesn't seem to need it. >>>>> >>>>> I've been using this for 6 months plus now and as I say it works really >>>>> well. >>>>> >>>>> Hope this helps. >>>>> >>>>> mike >>>>> >>>>> ##### CGI::Application community mailing list ################ >>>>> ## ## >>>>> ## To unsubscribe, or change your message delivery options, ## >>>>> ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## >>>>> ## ## >>>>> ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## >>>>> ## Wiki: http://cgiapp.erlbaum.net/ ## >>>>> ## ## >>>>> ################################################################ >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> ##### CGI::Application community mailing list ################ >>> ## ## >>> ## To unsubscribe, or change your message delivery options, ## >>> ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## >>> ## ## >>> ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## >>> ## Wiki: http://cgiapp.erlbaum.net/ ## >>> ## ## >>> ################################################################ >>> >>> >>> >> >> >> >> > > ##### CGI::Application community mailing list ################ > ## ## > ## To unsubscribe, or change your message delivery options, ## > ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## > ## ## > ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## > ## Wiki: http://cgiapp.erlbaum.net/ ## > ## ## > ################################################################ > > -- Puneet Kishor http://www.punkish.org Carbon Model http://carbonmodel.org Charter Member, Open Source Geospatial Foundation http://www.osgeo.org Science Commons Fellow, http://sciencecommons.org/about/whoweare/kishor Nelson Institute, UW-Madison http://www.nelson.wisc.edu ----------------------------------------------------------------------- Assertions are politics; backing up assertions with evidence is science ======================================================================= ##### CGI::Application community mailing list ################ ## ## ## To unsubscribe, or change your message delivery options, ## ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## ## ## ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## ## Wiki: http://cgiapp.erlbaum.net/ ## ## ## ################################################################