I need to setup deploy task to run eye. Tried to deal with gem-wrappers, but had no success. As capistrano3 is using non-interactive ssh, without loading user’s environment (.profile, .bashrc etc), then command, which is not in PATH, it’s not workin.
So, after searching and reading capistrano (capistrano/rvm) source, then sshkit source, I got into this simple solution.
It’s not dependent on any other settings nor knowing what, where rvm is installed.
before change in deploy.rb (not working)
INFO [57a66442] Running /usr/bin/env eye info on example.com DEBUG [46484690] Command: cd /home/deploy/app/releases/20140130214109 && ( /usr/bin/env eye info ) DEBUG [46484690] /usr/bin/env: eye DEBUG [46484690] : No such file or directory
after change in deploy.rb
INFO [a2f9c75f] Running /usr/local/rvm/bin/rvm default do eye info on example.com
set :rvm_remap_bins, %w{eye} namespace :settings do task :prefix_rake do fetch(:rvm_remap_bins).each do |cmd| SSHKit.config.command_map[cmd.to_sym] = "#{SSHKit.config.command_map[:gem].gsub(/gem$/,'')} #{cmd}" end end end after 'rvm:hook', 'settings:prefix_rake'
original code from capistrano is
# https://github.com/capistrano/rvm/blob/master/lib/capistrano/tasks/rvm.rake SSHKit.config.command_map[:rvm] = "#{fetch(:rvm_path)}/bin/rvm" rvm_prefix = "#{fetch(:rvm_path)}/bin/rvm #{fetch(:rvm_ruby_version)} do" fetch(:rvm_map_bins).each do |command| SSHKit.config.command_map.prefix[command.to_sym].unshift(rvm_prefix) end ... set :rvm_map_bins, %w{gem rake ruby bundle}