I've just changed my development machine from rvm to rbenv, but my production machine is still using rvm. Now when I try and deploy I get this error message:
cap deploy
/home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:152:in `require': no such file to load -- rvm/capistrano (LoadError)
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:152:in `require'
from ./config/deploy.rb:38:in `load'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:93:in `instance_eval'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:93:in `load'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:172:in `load_from_file'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:89:in `load'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:86:in `block in load'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:86:in `each'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:86:in `load'
from Capfile:4:in `load'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:93:in `instance_eval'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:93:in `load'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:172:in `load_from_file'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:89:in `load'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:86:in `block in load'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:86:in `each'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/configuration/loading.rb:86:in `load'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/cli/execute.rb:65:in `block in load_recipes'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/cli/execute.rb:65:in `each'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/cli/execute.rb:65:in `load_recipes'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/cli/execute.rb:31:in `execute!'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/lib/capistrano/cli/execute.rb:14:in `execute'
from /home/map7/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/capistrano-2.5.19/bin/cap:4:in `<top (required)>'
from /home/map7/.rbenv/versions/1.9.2-p290/bin/cap:19:in `load'
from /home/map7/.rbenv/versions/1.9.2-p290/bin/cap:19:in `<main>'
Here is my deploy.rb
require 'bundler/capistrano'
require 'thinking_sphinx/deploy/capistrano'
set :application, "myapp"
set :repository, "myuser@localhost:/home/myuser/myapp"
# Deployment options
set :deploy_to, "/home/remoteuser/myapp"
set :deploy_via, :copy
# Remote user info
set :user, "myuser"
set :use_sudo, false
default_run_options[:pty] = true
# Version control system
set :scm, :git
set :branch, "master"
# Add RVM's lib directory to the load path.
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
# Load RVM's capistrano plugin.
require "rvm/capistrano"
set :rvm_ruby_string, '1.9.2'
set :rvm_type, :user # Don't use system-wide RVM
...
I don't want to have to change the server drastically and I feel that if I remove rvm and install ruby without a version control system it would be better but very disruptive.
Is there a way of fixing this error without change rvm on the server and rbenv on my dev box? If not should I just get rid of rvm and use rbenv on the server?
You need to wrap the rvm code in a test:
if ENV['rvm_path']
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require "rvm/capistrano"
set :rvm_ruby_string, '1.9.2'
set :rvm_type, :user
end
And if you still require RVM for deployin on production:
export rvm_path=/path/to/rvm
in ~/.bash_profile or:
export rvm_path=/path/to/rvm
in ~/.bash_profile
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.