Note that there are some explanatory texts on larger screens.

plurals
  1. PODeploying with capistrano and rvm-capistrano
    primarykey
    data
    text
    <p>I am using Capistrano to bootstrap an empty Ubuntu VM.</p> <p>I have a base recipe that installs base requirements:</p> <h1>recipes/base.rb</h1> <pre class="lang-rb prettyprint-override"><code>def set_default(name, *args, &amp;block) set(name, *args, &amp;block) unless exists?(name) end namespace :deploy do desc "Install everything onto the server" task :install do run "#{sudo} apt-get -y update" # Common dependencies run "#{sudo} apt-get -y install curl git-core build-essential python-software-properties" run "#{sudo} apt-get -y install sudo apt-get -y install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion" # Set timezone to UTC run "#{sudo} bash -c 'echo UTC &gt; /etc/timezone'" run "#{sudo} cp /usr/share/zoneinfo/UTC /etc/localtime" run "#{sudo} dpkg-reconfigure -f noninteractive tzdata" end end </code></pre> <p>I also have a recipe for installing rvm. I use the <code>rvm-capistrano</code> gem for this:</p> <h1>recipes/rvm.rb</h1> <pre class="lang-rb prettyprint-override"><code>set_default(:rvm_ruby_string) { "1.9.3@#{application}" } set_default(:rvm_install_type, :stable) set_default(:rvm_type, :user) require 'rvm/capistrano' after 'deploy:setup', 'rvm:install_rvm' after 'deploy:setup', 'rvm:install_ruby' </code></pre> <p>It appears as if the <code>rvm-capistrano</code> gem is modifying the default shell for every task and appending:</p> <pre><code>rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3@application' </code></pre> <p>The repercussion of this is that my base recipe is no longer working since it is runned before installing rvm:</p> <pre><code>cjoudrey (master) app$ cap deploy:install * executing `deploy:install' * executing "sudo -p 'sudo password: ' apt-get -y update" servers: ["33.33.33.10"] [33.33.33.10] executing command [33.33.33.10] rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3@app' -c 'sudo -p '\''sudo password: '\'' apt-get -y update' ** [out :: 33.33.33.10] bash: /home/vagrant/.rvm/bin/rvm-shell: No such file or directory command finished in 45ms failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3@app' -c 'sudo -p '\\''sudo password: '\\'' apt-get -y update'" on 33.33.33.10 cjoudrey (master) app$ </code></pre> <h1>deploy.rb</h1> <pre class="lang-rb prettyprint-override"><code>require 'bundler/capistrano' load 'config/recipes/base' load 'config/recipes/rvm' load 'config/recipes/nginx' load 'config/recipes/mysql' load 'config/recipes/nodejs' server '33.33.33.10', :web, :app, :db, primary: true set :user, 'vagrant' set :application, 'app' set :deploy_to, "/home/#{user}/apps/#{application}" set :deploy_via, :remote_cache set :use_sudo, false set :scm, 'git' set :repository, 'git@github.com:cjoudrey/test.git' set :branch, 'master' default_run_options[:pty] = true ssh_options[:forward_agent] = true ssh_options[:keys] = `vagrant ssh-config | grep IdentityFile`.split(' ').last after 'deploy', 'deploy:cleanup' </code></pre> <p>Has anyone had this issue before? Is there a way to control when <code>rvm-capistrano</code> modifies the default shell? i.e. Is there a way to have it not modify the default shell for <code>deploy:install</code>?</p> <p>Should I just make my own rvm recipe instead of using <code>rvm-capistrano</code>?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload