When I ran cap deploy:setup, the following actually installed rvm, ruby and the online_store gemset on my staging server:

set :rvm_ruby_string, 'ruby-1.9.3-p0@online_store' set :rvm_autolibs_flag, "read-only"

set :rvm_type, :system set :rvm_install_with_sudo, true

before 'deploy:setup', 'rvm:install_rvm' # install RVM before 'deploy:setup', 'rvm:install_ruby' # install Ruby and create gemset, OR: before 'deploy:setup', 'rvm:create_gemset' # only create gemset

Now that's what you would expect. However, I already had rvm, ruby installed on my server, and all I wanted installed was the gemset called online_store. So why was this unable to detect that rvm and ruby was already installed?

my guess is that you had an older version of RVM and an older patch of Ruby. Whenever you run cap deploy:setup on the above code, it’s going to do two things:

  1. Update RVM to the current stable version (if the installed version isn’t current)

  2. Install the latest stable version of Ruby. Note, this is an install, not an update. It will leave older versions in the repository. To RVM, 1.9.3-p0 is different from 1.9.3-p194. If you run the above and 1.9.3-p0 was installed on the server, it will now install 1.9.3-p194 and both will be installed (and available).