0

I have a script which is installing Ruby/RVM (and more) on my server to get an environment ready to deploy a Rails project. This script is in ruby and use the net-ssh lib to do the job.

After having installed RVM, Ruby, I would like to create the project Gemset:

connection do |conn|
  logger("Create RVM environment #{ruby_version}@#{project_name}")
  conn.exec!("#{rvmsudo_path} #{rvm_path} gemset create #{project_name}")   
end

I get my gemset created under, all good:

/usr/local/rvm/gems/ruby-1.9.3-p286@my_project_name

Here is my Capistrano setting for rvm/ruby:

set :rvm_type, :system
set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"")

When I'm trying to deploy using capistrano, I get:

/usr/local/rvm/environments/ruby-1.9.3-p286@my_project_name: Permission denied

The environment file 'ruby-1.9.3-p286@my_project_name' is actually missing in that folder. I need to log into the server and navigate to my project so the .rvmrc file to trigger the creation of the environment (rvm --create my_project_name). I would like to avoid this last step. Do you know how to trigger the creation of this environment? (I though it would create it when I have created the Gemset)

Vincent Peres
  • 1,003
  • 1
  • 13
  • 28

2 Answers2

0

RVM has support for installing itself via capistrano, to install rubies and to create gemsets, you should make use of it:

mpapis
  • 52,729
  • 14
  • 121
  • 158
0

Basically the RVM environment need to be loaded to be able to script it remotely. https://rvm.io/workflow/scripting/

You can run the following command with net-ssh to do so:

conn.exec!("source "/usr/local/rvm/scripts/rvm; rvm --create ruby-1.9.3-p286@my_project_name")

It will create your environment and associated gemset.

Vincent Peres
  • 1,003
  • 1
  • 13
  • 28
  • replacing `/usr/local/rvm/scripts/rvm` with `$HOME/.rvm/scripts/rvm` if you installed RVM as a user (which is recommended). – Mike Campbell Feb 04 '14 at 13:11