Rather than using the latest Rails gem for my application, I like to have the code local in my own git repository, which means putting it in vendor/rails.
There are a couple of ways of doing this: downloading the source for the particular branch/tag I want to run and committing it to my repository, or using git submodules.
Submodules seem like a natural way to go, but isn’t it the case that each time you clone the repository you’ll have to manually check out the branch you want to use that submodule for (otherwise you’ll just get master)? And is there an impact on Capistrano deployments using this method?
I’d recommend freezing on a release:
There is a git branch for 2-3-stable, but I’ve had a terrible time using it. Submodules are a bit of a pain. The tool Braid is pretty nice, but I like freezing Rails with releases.
Capistrano is going to be a little more sluggish deploying your code (the whole Rails codebase is in there), but capistrano itself and your production setup should not need to be altered.
Good luck!