Please open a ticket about this proposal. On Saturday, 14 December 2013 15:07:02 UTC-6, Rob Mayhue wrote: > > Proposal - use the value of an environment variable as a path_prefix > > When using the parametric router there is an option called `path_prefix` > that's > described as "a path fragment that is prefixed to all outgoing URLs and > stripped > from all incoming URLs". I'm not sure what the original use case was for > this option > but the "path fragment" is a static value, a string that's added to BASE > in routes.py > like so: > > routers = dict( > ... > BASE=dict( > ... > path_prefix='PATH_FRAGMENT', # or even 'PATH/FRAGMENT' > ... > ), > ) > > > This allows things like 'http://domain-name.tld/PATH_FRAGMENT/a/c/f' > > In my use case I wanted the simplicity of the parametric router but I > needed to be > able to pass in the path fragment on the incoming URL so that it could > change and > still be "prefixed to all outgoing URLs and stripped from all incoming > URLs", or > possibly not even exist at all. > > I made some changes to gluon/rewrite.py to allow the value of an > environment variable > to be used as the path fragment if it exists. To use it I prefix the > string assigned > to `path_prefix` with a '$' like this: > > routers = dict( > ... > BASE=dict( > ... > path_prefix='$MY_ENV_VARIABLE', > ... > ), > ) > > > Leaving off the '$' causes `path_prefix` to work normally. > > Then in the server config I use a rewrite rule and get the path fragment > via a > regex and create the environment variable. The following is an apache > rewrite rule, > but this could be nginx etc as well. This rule gets anything starting with > an > underscore (e.g. http://domain-name.tld/_MY_VALUE). > > RewriteRule ^/(_[^/]+) - [E=MY_ENV_VARIABLE:$1] > > > After that we have an environment variable with 'MY_ENV_VARIABLE' as its > key and > '_MY_VALUE' as its value. > > Basically the changes I made to gluon/rewrite.py allow the value of that > environment > variable to be used as the path fragment allowing you to change it by > passing in a new > path fragment on the URL and it acts just like the original `path_prefix` > option. > > In my use case I'm planning to use the "path fragment" for multi-tenancy. > Maybe there > is a better way to do this using the pattern based router and I just > didn't see it. > > I wanted to toss this onto the list and get some feedback, and if there is > an easier > way, be shown the light :) > >
-- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.