2012-03-16 108 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