0.0
Repository is archived
No commit activity in last 3 years
No release in over 3 years
ActionVersion is a work in progress looking to provide a simple and elegant way of versioning REST APIs
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.6
>= 0
 Project Readme

ActionVersion

Warning: This is currently a work in progress

ActionVersion provides a simple and elegant way of versionning REST APIs.

It's designed to simplify versioning APIs with the current date version string like Foursquare's API but supports incremental versions as well.

Installation

Add this line to your application's Gemfile:

gem 'actionversion'

And then execute:

$ bundle

Or install it yourself as:

$ gem install actionversion

Usage

ActionVersion let's you version controllers with a single action (named perform) so if you have a route like:

get :profile, to 'profiles#perform'

You can version your ProfilesController like:

class ProfilesController < ApplicationController
  include ActionVersion::Controller

  version(2) do
    render json: {
      name: "John Doe",
    }
  end

  version(3) do
    render json: {
      first_name: "John",
      last_name: "Doe"
    }
  end

end

Now you can query your new API endpoint using curl like:

$ curl -H 'Accept: application/json; version=2' http://localhost:3000/profile
{"name":"John Doe"}
$ curl -H 'Accept: application/json; version=3' http://localhost:3000/profile
{"first_name":"John","last_name":"Doe"}

And if you release a new version you don't have to do anything on your old endpoints to "port them" because ActionVersion will return the latest available definition

$ curl -H 'Accept: application/json; version=4' http://localhost:3000/profile
{"first_name":"John","last_name":"Doe"} # The same as version 3

And on the other side if you request a version with a lower number it will render a not foud error

$ curl -i -H 'Accept: application/json; version=1' http://localhost:3000/profile
HTTP/1.1 404 Not Found
...

For more use cases and examples check out the wiki

Contributing

  1. Fork it ( https://github.com/sagmor/actionversion/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request