For what it's worth, I absolutely agree with Donovan in this respect, that said I do use Chef provisioned environments with rbenv, chiefly because rbenv does a better job of installing Ruby and it's obscure dependencies (should we rather say, unintelligent searching of dependencies) and in order to create a layer of separation between my provisioning environment, and my application environment.
All of that being said, I know the risks, I know where to look when things go wrong, and I know that even then, it's a bad idea. (But Chef doesn't make it that easy)
As is almost always the case, people are misunderstanding the way Capistrano works, and relying on dotfile hacks, and shell environment modification scripts (rvm) and wondering why it doesn't work in an environment with no shell and which doesn't source dotfiles.
Rbenv at least provides `local-ruby-exec` which is a replacement for the `#!/bin/env ruby` line, which takes care of the modifications to the environment, this at least makes it tolerable in production, but requires modifications to the PATH, to Capistrano, to the bundle configuration and more, for me this is a worthy trade-off.
I would advise against doing anything with RVM in production, period. If you must (you mustn't) use something like this in production look at rbenv; it's from a 37signals employee, and it's particularly well written. (Don't do it.)
If you are using Chef ( as I am ) and you want to separate Chef from your application, don't - modify your bootstrap to install the system version of Ruby that you desire (I wish I would have done this, but in my position as Cap maintainer I owe it to the community to experiment with various configurations)
- Lee