advise request: plugin routes with version prefix


I'm developing an API as a rails plugin, and I would like to be able
to install multiple versions in parallel.
The routing is not a big problem, I can define routes with the correct
prefix. The problem would be with the controller though.
I think it would be preferable to have the controller keep its name
across versions, but then, how can the routing know which controller
should handle the request?

If I have versions v1 and v2 of the api installed, the plugins would
provide these routes:
  connect '/rest/simple/v1/:controller/:action/:id"
  connect '/rest/simple/v2/:controller/:action/:id"

To make it work, would the only solution be to have the controllers called
Rest::Simple::V1::MyController and Rest::Simple::V2::MyController ?

I currently don't see an alternate solution. Does anyone here have one?

Thanks in advance


Hi Raphaël,

Changing the version of an API is never just about the version, the
implications are more often than not pretty deep.

My take on your case would be to publish your application as the
version itself, not clouding each version with overly complex code to
handle version specific code and version specific transformations...

Right now it might seem as 2 version... how about in 5 years from

So, instead of having:

connect '/rest/simple/v1/:controller/:action/:id'
connect '/rest/simple/v2/:controller/:action/:id'

You would have:
connect '/rest/simple/:controller/:action/:id'

in two different applications....

Food for thoughts... but no matter what you determine... post it there
so we can all learn for your reflection!

have a good day!