abdera-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James M Snell <jasn...@gmail.com>
Subject Re: Route matching too liberal?
Date Thu, 19 Jun 2008 14:48:38 GMT
Works for me. Would you be interested in writing up a patch and 
submitting it to jira?  If not, I could work up the change but it may 
take a few days longer as I'm trying disparately to get caught up on 
some day job stuff.

- James

ed_ruder wrote:
> James,
> 
> I'm not very familiar with Abdera, but I have browsed the source a bit after
> hitting the same limitation that Jim reported, while working on Shindig. I
> *think* that a simple change in RouteManager could alleviate some (and for
> me, I think, all) of the limitation.
> 
> When resolving a route, Rails walks through its routes in the order that
> they are defined. RouteManager walks through the targets.entrySet, which is
> unordered. If RouteManager kept a targets List<> instead of a targets Map<>,
> it could walk through the routes in order. (There would need to be a new
> class defined, to hold both the Route and TargetType, but it would be very
> simple.)
> 
> To work around the limitation Jim describes, a client would define a
> /base/:collection/:entry route before the /base/:collection route.
> 
> WDYT?
> 
> Ed
> 
> 
> James M Snell wrote:
>> Ruby matching can span segments if a default value for the missing 
>> variables is provided.  We, however, don't have default values for our 
>> variables.  It would make sense for us to tighten up the matching rules.
>>
>> - James
>>
>> Jim Ancona wrote:
>>> I have run into some problems with my Routes matching unexpectedly. 
>>> Before filing a bug, I thought I'd ask for feedback on whether the 
>>> current behavior is correct.
>>>
>>> The current algorithm attempts to match the non-variable parts of the 
>>> pattern, setting the variable to whatever is in between.
>>>
>>> So the pattern "/base/:collection/" matches both "/base/test/" and 
>>> "/base/test/123/". In the second case, the value of the collection 
>>> variable is "test/123". In my opinion, not allowing matches to span URI 
>>> segments would be less prone to unintuitive results.
>>>
>>> FWIW, a quick glance at some docs on Ruby Routes seems to indicate that 
>>> they do not span URI path segments.
>>>
>>> Thoughts?
>>>
>>> Jim
>>>
>>
> 

Mime
View raw message