On Aug 31, 2010, at 10:01 AM, mwolfe02 wrote:
> 
> More clues...  When web2py loads, rewrite.params.routes_in gets set as
> follows:
> 
> - items from base routes_in are appended first
> - then items from app-specific routes_in are appended in alphabetical
> order by application
> 
> This seems to be causing my problems.  More info to follow...

I think I may see the problem. If I'm right, when we initialize a new set of 
params from the default set, we need to do a deeper copy than we're doing now.

Can I send you a replacement rewrite.py to try out? It'd be from the trunk, 
which ought to be equivalent, for our purposes, to the current nightly and 
close enough to the last stable release.

> 
> -Mike
> 
> On Aug 31, 12:31 pm, mwolfe02 <[email protected]> wrote:
>> I'm still debugging now, but there seems to be an issue using the
>> special $anything token insideapp-specificroutes_in.  It appears
>> that the incoming URL is being applied to eachapp-specificroutes_in
>> one at a time before it is applied against routes_app.
>> 
>> I'll try to include more details later, but I wanted to bring it to
>> your attention now.
>> 
>> -Mike
>> 
>> On Aug 7, 12:36 pm, Jonathan Lundell <[email protected]> wrote:
>> 
>> 
>> 
>>> On Aug 7, 2010, at 9:32 AM, David Marko wrote:
>> 
>>>> Hello,
>>>> have you tested performance impact on application. Do you assume some
>>>> noticeable slowdown when usingroutes?
>> 
>>> I have not measured it, but I'd expect the effect to be trivial, perhaps 
>>> unmeasurable in that it'd be in the noise.
>> 
>>> In particular, the routing files are read and the regexes compiled only 
>>> once, when web2py starts up, so the per-request overhead is quite low.
>> 
>>>> david
>> 
>>>> On 7 srp, 18:26, Jonathan Lundell <[email protected]> wrote:
>>>>> On Aug 7, 2010, at 9:03 AM, mdipierro wrote:
>> 
>>>>>> Thanks to Jonathan Lundell we have an experimental version in trunk of
>>>>>> applevelroutes.
>>>>>> To understand how it works readroutes.example.py and comments in the
>>>>>> file gluon/rewrite.py
>> 
>>>>>> If you test it please report your findings here.
>> 
>>>>> *Very* experimental, mostly not tested.
>> 
>>>>> I'll describe some of the changes here.
>> 
>>>>> 1. If you don't explicitly invoke any of the new features, routing should 
>>>>> behave identically to before. If you see any different, please let us 
>>>>> know asap.
>> 
>>>>> 2. You can now have aroutes.py in the top level folder of an application, 
>>>>> and it will be used *instead* of the baseroutes.py. However, it's not 
>>>>> enough to simply have the file there; you must inform the routing logic 
>>>>> about it.
>> 
>>>>> 3. The way you inform the routing logic is with a new element in the 
>>>>> baseroutes.py: routes_app. routes_app is processed identically to 
>>>>> routes_in, but the output must be anappname (or nothing). routes_app is 
>>>>> processed at the beginning of a request. If it produces anappname, and 
>>>>> thatapphas anapp-specificroutes.py (that is, 
>>>>> applications/appname/routes.py), then thatroutes.py is used instead of 
>>>>> the baseroutes.py.
>> 
>>>>> 4. In an unrelated change, there are three other new elements inroutes.py:
>> 
>>>>> default_application = "init"
>>>>> default_controller = "default"
>>>>> default_function = "index"
>> 
>>>>> Note that default_application doesn't interact withapp-specfic routing, 
>>>>> since it's used after rewrite has taken place. default_controller and 
>>>>> default_function should normally be used only in anapp-specificroutes.py, 
>>>>> because, in the baseroutes.py, they will apply to all apps *without* 
>>>>> anapp-specificroutes.py. That would probably lead to confusion when 
>>>>> running admin or examples; at the very least their defaults would break.
>> 
>>>>> 5. As usual, I suggest that when you editroutes.example.py to generate a 
>>>>> newroutes.py, you also edit the doctest at the end, and use it to verify 
>>>>> that you're getting what you expect. To run the doctest, just do 
>>>>> "pythonroutes.py".
>> 
>>>>> Note also that I have a more far-reaching change in mind, but don't have 
>>>>> it worked out yet. The new version will move away from regexes (though 
>>>>> the old logic will remain in place for compatibility). It's supposed to 
>>>>> be more flexible and much easier to use, and also handle URL encoding & 
>>>>> decoding better. But this change should help in the meantime.


Reply via email to