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



Reply via email to