yes, as far as I can tell the patch solved the infinite loop problem.
All other things are working correctly: it did not brake anything as
far as my tests gone.

On 20 Nov, 17:14, Anthony <abasta...@gmail.com> wrote:
> OK, so specifically regarding routes_onerror, has the recent patch
> eliminated the infinite loop problem (and not broken anything else), as far
> as you can tell?
>
> And yes, the pattern-based and parameter-based systems cannot be mixed --
> you must use one or the other. routes_onerror, however, works with either
> system.
>
> Note, in the parameter-based system, you can do:
>
> routers = dict(
>     BASE = dict(
>         default_application = 'appname',
>         root_static = ['favicon.ico', 'robots.txt', 'sitemap.xml']
>     ),
> )
>
> to set static files that should be accessible from the root URL.
>
> Anthony
>
>
>
>
>
>
>
> On Sunday, November 20, 2011 8:53:42 AM UTC-5, Niphlod wrote:
>
> > so, here's a few tests on the functionality at the current state
> > (patch applied). Maybe we can sum up a little "recipe" to explain
> > better
> > the "interaction" between parameter based and pattern based
> > rewrite....
>
> > These settings for production sites are a real deal, so, here we
> > are...
> > The test is a basic app, with an errors/index function expressed as:
>
> > def index():
> >     response.status = request.vars.code
> >     return dict(vars=request.vars)
>
> > The test is "passed" when:
> > a) the appname is stripped from the url
> > b) the error handler doesn't loop forever
> > c) a request made tohttp://host.domain/robots.txtreturns the
> > contents of appname/static/robots.txt
> > d) a request made tohttp://host.domain/favicon.icoreturns the
> > contents of appname/static/favicon.ico
> > e) a request made tohttp://host.domain/sitemap.xmlreturns the
> > contents of appname/static/sitemap.xml
>
> > TEST 1:
> > ---routes.py---
> > default_application = 'appname'
> > routes_onerror = [
> >   ('*/*', '/appname/errors/index')
> > ]
>
> > results : a) not working (that's expected), b) working, c), d), e) not
> > working (expected behaviour)
>
> > TEST 2:
> > ---routes.py---
> > default_application = 'appname'
> > routers = dict(
> >     BASE = dict(
> >         default_application = 'appname',
> >     ),
> > )
>
> > routes_onerror = [
> >   ('*/*', '/errors/index')
> > ]
>
> > results: a) working, b) working, c) working, d) working, e) not
> > working
>
> > ---routes.py---
> > default_application = 'appname'
> > routes_in = (
> >   ('/robots.txt', '/static/robots.txt'),
> >   ('/sitemap.xml', '/static/sitemap.xml'),
> >   ('/favicon.ico', '/static/favicon.ico'),
> > )
>
> > routes_out = (
> >   ('/static/robots.txt', '/robots.txt'),
> >   ('/static/sitemap.xml', '/sitemap.xml'),
> >   ('/static/favicon.ico', '/favicon.ico'),
> > )
>
> > routers = dict(
> >     BASE = dict(
> >         default_application = 'appname',
> >     ),
> > )
>
> > routes_onerror = [
> >   ('*/*', '/errors/index')
> > ]
>
> > results: a) working, b) working, c) working, d) working, e) not
> > working
>
> > TEST 3:
> > ---routes.py---
> > default_application = 'appname'
> > routes_in = (
> >   ('/(?P<any>.*)', '/appname/\g<any>'),
> >   ('/favicon.ico', '/appname/static/favicon.ico'),
> >   ('/sitemap.xml', '/appname/static/sitemap.xml'),
> >   ('/robots.txt', '/appname/static/robots.txt')
> > )
>
> > routes_out = (
> >   ('/appname/(?P<any>.*)', '/\g<any>'),
> >   ('/appname/static/favicon.ico', '/favicon.ico' ),
> >   ('/appname/static/robots.txt', '/robots.txt'),
> >   ('/appname/static/sitemap.xml', '/sitemap.xml')
> > )
>
> > routes_onerror = [
> >   ('*/*', '/errors/index')
> > ]
>
> > results: a) working, b) working, c) working, d) working, e) not
> > working
>
> > TEST 4:
> > default_application = 'appname'
> > routes_in = (
> >   ('/favicon.ico', '/appname/static/favicon.ico'),
> >   ('/robots.txt', '/appname/static/robots.txt'),
> >   ('/sitemap.xml', '/appname/static/sitemap.xml'),
> >   ('/(?P<any>.*)', '/appname/\g<any>')
> > )
>
> > routes_out = (
> >   ('/appname/static/favicon.ico', '/favicon.ico' ),
> >   ('/appname/static/robots.txt', '/robots.txt'),
> >   ('/appname/static/sitemap.xml', '/sitemap.xml'),
> >   ('/appname/(?P<any>.*)', '/\g<any>')
> > )
> > results: a) working, b) working, c) working, d) working, e) working
>
> > So, to sum up, something I think I have learned from the experience:
> > - pattern-based and parameter-based aren't meant to use together. With
> > pattern-based system "root files" as robots.txt and favicon.ico are
> > handled internally but not sitemap.xml (or anything else)
> > - routes_onerror seems to work independantly of the "rewrite method"
> > - in pattern-based system the order matters. This is an expected
> > behaviour but nonetheless worth to remember. As an example, take TEST
> > 3 and TEST 4... sitemap.xml gets "taken" by the   ('/(?P<any>.*)', '/
> > appname/\g<any>') tuple in TEST 3 before the "exact match".
> > - parameter-based is really helpful to map domains to apps or if you
> > have multiple apps but only one "preferred", or with language-based
> > redirections. With parameter-based system you can access other apps by
> > "normal" non-rewritten urls. With pattern-based if you want to have a
> > "default" application you have to map any additional application
> > specifically.

Reply via email to