boazsegev / plezi

Plezi - the Ruby framework for realtime web-apps, websockets and RESTful HTTP

Home Page:www.plezi.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Should add param support to routes?

boazsegev opened this issue · comments

commented

I'm just thinking out loud if the routes method should support parameters / optional parameters, so we could have something like this:

route '/(:locale{en|de|ru})/book/:id' do
  params[:locale] # => en or de or ru
  params[:id] # => id supplied
end

seems like a nice touch, but should be in the core library or in a different gem (if at all)?

commented

From my perspective, the price for magic routes is't worth it.

Adding features that are sometimes used is exactly what Anorexic is trying to avoid.

Since it is possible to use Regexp in routes, it seems easy enough to get the same result using a "SuperController" class and a correctly parsed routing system.

It's quite simple to rewrite the path as well, so that the "SuperController" could use the before filter to extract any parameters and rewrite the path for a simple routing system.

an app could apply it's own preferred path scheme doing something like this:

class SuperC
   def before
      result = request.match /^\/(en|he|ru|hu)(\/?.*)/
      if result
         params["locale"] = result[1].to_sym
      end
     request.path_info = result[2] 
     return false
   end
end

listen

route '*', SuperC

# routes

This will also allow an app to create it's own link's generator that adhere to it's scheme.

Still working on it...

commented

Due to popular demand, magic routes are back on the table...

I found a way to move most of the heavy lifting for magic routes to the route initialization... so I feel comfortable enough implementing this feature.