Question

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)

Was it helpful?

Solution 2

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.

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top