2012-03-16 109 views
1

我刚刚将我的开发机器从rvm更改为rbenv,但我的生产机器仍在使用rvm。现在,当我尝试和部署我得到这个错误信息:capistrano不工作没有rvm

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>' 

这里是我的deploy.rb

require 'bundler/capistrano' 
require 'thinking_sphinx/deploy/capistrano' 

set :application, "myapp" 
set :repository, "[email protected]:/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 

... 

我不希望有彻底改变服务器,我觉得如果我删除rvm并在没有版本控制系统的情况下安装ruby,它会更好,但非常具有破坏性。

有没有办法解决这个错误,而无需更改服务器上的rvm和我的开发盒上的rbenv? 如果不是,我应该摆脱rvm并在服务器上使用rbenv?

+1

你尝试添加RVM作为宝石?那么你应该可以删除'$ :. unshift(File.expand_path('./ lib',ENV ['rvm_path']))'stuff – phoet 2012-03-16 16:19:19

+0

你说得对,我必须这样做,并且在UTF-8上我的Gemfile的顶部相关的问题,ref:http://stackoverflow.com/questions/7146560/error-in-the-push-heroku-json-and-ruby-1-9-2 – map7 2012-03-18 03:03:20

回答

0

你需要用的RVM代码测试:

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 

如果你仍然需要RVM为deployin生产:

  • 安装RVM
  • 删除采购线
  • 在〜/ .bash_profile中设置export rvm_path=/path/to/rvm

或:

  • 克隆的git://github.com/wayneeseguin/rvm.git
  • 设置export rvm_path=/path/to/rvm〜/ .bash_profile中
+0

不会这个打破依赖服务器上rvm的部署? – phoet 2012-03-16 16:20:20

+0

啊对不起,我不明白你的问题,检查我的更新(添加了2种方法在生产中使用RVM,但不在开发中) – mpapis 2012-03-17 02:26:09