簡體   English   中英

沒有rvm,capistrano無法正常工作

[英]capistrano not working without rvm

我剛剛將開發機器從rvm更改為rbenv,但是我的生產機器仍在使用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,  "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

...

我不想徹底改變服務器,我覺得如果我刪除rvm並在沒有版本控制系統的情況下安裝ruby會更好,但會造成破壞。

有沒有一種方法可以解決此錯誤,而無需更改服務器上的rvm和我的開發設備上的rbenv? 如果不是,我應該擺脫rvm並在服務器上使用rbenv嗎?

您需要在測試中包裝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在生產環境中進行部署,請執行以下操作:

  • 安裝RVM
  • 刪除采購線
  • 在〜/ .bash_profile中設置export rvm_path=/path/to/rvm

要么:

  • 克隆git://github.com/wayneeseguin/rvm.git
  • 在〜/ .bash_profile中設置export rvm_path=/path/to/rvm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM