Forum: Ruby on Rails advise request: plugin routes with version prefix

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
71c85a662af0764df3a77cc00db166c9?d=identicon&s=25 Raphael Bauduin (Guest)
on 2009-02-16 16:43
(Received via mailing list)
Hi,

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

Raphaël


--
Web database: http://www.myowndb.com
Free Software Developers Meeting: http://www.fosdem.org
3d02b4f32fa6f82ed55b408e471bae55?d=identicon&s=25 Jean-Marc (M2i3.com) (Guest)
on 2009-02-27 21:42
(Received via mailing list)
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
now...

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!

Jean-Marc
http://m2i3.com
This topic is locked and can not be replied to.