[Catalyst] offset the URI of an existing Cat App

Octavian Râsnita orasnita at gmail.com
Tue Jul 7 13:54:39 GMT 2009


From: "Ian Docherty" <catalyst at iandocherty.com>
> Hi
> I have always written Cat Apps so they start at the '/' URI but now I have 
> been asked to 'offset' one so that:-
>
> /        becomes /foo
> /user    becomes /foo/user
> /admin/1 becames /foo/admin/1

Hi,

If using mod_perl, instead of:

<Location />
SetHandler perl-script
PerlResponseHandler MyApp
</Location>

use:

<Location /foo>
SetHandler perl-script
PerlResponseHandler MyApp
</Location>

And the application should work at the new location.

But if in the templates you use urls like:

<a href="/user">...</a>

you need to change them to urls like:
<a href="[% c.uri_for('/user') %]">...</a>

If you use fastcgi, instead of:

FastCgiExternalServer /tmp/myapp.fcgi -socket /tmp/myapp.socket
Alias / /tmp/myapp.fcgi/

you could use:

FastCgiExternalServer /tmp/myapp.fcgi -socket /tmp/myapp.socket
Alias /foo /tmp/myapp.fcgi/

Note! I know these only from theory, because I always needed to use apps 
only at "/".

HTH.

Octavian



>
> etc.
>
> I saw the __PACKAGE__->config->{namespace} that could be used but this 
> would still require an entry in each of my controllers. e.g.
>
> package MyApp::Controller::Root;
> ...
> __PACKAGE__->config->{namespace} = 'foo';
> ...
>
>
> package MyApp::Controller::Admin;
> ...
> __PACKAGE__->config->{namespace} = 'foo/admin';
> ...
>
>
> etc. which strikes me as very unsatisfactory.
>
> I think I must have missed something. Is there a single point where I can 
> make a change that will replicate through all my controllers? Can anyone 
> put me right?
>
> Regards
> Ian
>
> _______________________________________________
> List: Catalyst at lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: 
> http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> Dev site: http://dev.catalyst.perl.org/ 




More information about the Catalyst mailing list