Pajk/apipie-rails — pull request #75 by iNecas (2013-01-21 14:12:41+00:00)
Title: API versioning support

Updating the origin api_versioning branch, merging the recent changes
and some improvements.

The versioning works as follows:

Every resource/method can belong to more versions. The version is
specified with the `api_version` DSL version:

resource_description do
api_version "1"
api_version "2"
end

api :GET, "/api/users/"
api_version "1"
def index
# ...
end

In the example above we say the whole controller/resource is defined
for versions "1" and "2", but we override this with explicitly saying
`index` belongs only to version "1". Also inheritance works (therefore
we can specify the api_version for the parent controller and all
children will know about that).

From the Apipie API perspective, the resources belong to version.
With versioning, there are paths like this provided by apipie:

/apipie/1/users/index
/apipie/2/users/index

When not specifying the version explicitly in the path (or in dsl),
default version (`Apipie.configuration.default_version`) is used
instead ("1.0" by default). Therefore, the application that doesn't
need versioning should work as before.

The static page generator takes version parameter (or uses default).

You can specify the versions for the examples, with `versions`
keyword. It specifies the versions the example is used for. When not
specified, it's shown in all versions with given method.

When referencing or quering the resource/method descripion, this
format should be used: "verson#resource#method". When not specified,
the default version is used instead.