API Versioning is for your clients, not your code. The only reason to change the version is if you're going to make breaking changes that old clients can't process. It's possible to rewrite an API in a different language and still have it be the same version URI.
What we did for this case was to "not break the API during a minor version".
For instance, only return more data and not less. Do not change the conditions/meaning of errors.
If you need to, then it's the right moment to switch to v2.
Exactly. All minor/revision API changes should be backwards compatible. You can add new optional parameters and new methods/objects, but you can't change the semantics of anything existing.
If you need a breaking change, that's time to increment the major number. Besides that, who'd want to support that many versions running live?
If you do it like this, how do you then deal with 1.0.1? Especially in a framework like rails, where paths basically map to a folder structure?
I agree it's much nicer to be able to test manually when you have the version in the path but it significantly reduces flexibility later on.