支援
RVM 由志工社群維護,請將問題回報至 RVM 問題追蹤器。
如果您能提供協助或希望成為維護員之一,請開始提供協助。您可以在 RVM Github 組織 找到更多與 RVM 相關的專案。
贊助者
Carbon Ads

使用 RVM 與 Capistrano

整合的優點

將 RVM 與 Capistrano 整合,在 Capistrano 部署任務的背景下操作時,提供 RVM 的正常優點。這些優點包括

整合選項

有四種選項,如下方由最新到最舊列出。第一個選項較佳,因為它減少設定,且不包含硬編碼路徑。

使用 rvm-capistrano gem

請參閱 gem。 請注意,在此設定中,RVM 不會 自動載入為 shell 函式,儘管可執行檔會在 PATH 中。關於這兩種情況的差異,請參閱 指令碼編寫。

使用內建的 capistrano 外掛程式(已過時)

RVM >= 1.0.1 包含一個內建的外掛程式(不是 gem)以支援 capistrano。此設定幾乎與上述 gem 方法相同,但需要額外一行將 RVM 的 lib 目錄新增至載入路徑,才能找到外掛程式

# Choose a Ruby explicitly, or read from an environment variable.
set :rvm_ruby_string, 'ree@rails3'
# set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,'') 

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

請注意,預設情況下,外掛程式使用 RVM 的系統安裝,這與 gem 的預設安裝模式正好相反。若要改為使用每位使用者(非 root)安裝,請將下列內容新增至 Capfiledeploy.rb

set :rvm_type, :user  # Literal ":user"

使用 Capistrano :default_environment 設定(硬核)

對於此選項,在您的 deploy.rb 檔案中加入以下列,當然要調整為您特定的 rvm ruby

set :default_environment, {
  'PATH' => "/path/to/.rvm/gems/ree/1.8.7/bin:/path/to/.rvm/bin:/path/to/.rvm/ree-1.8.7-2009.10/bin:$PATH",
  'RUBY_VERSION' => 'ruby 1.8.7',
  'GEM_HOME'     => '/path/to/.rvm/gems/ree-1.8.7-2010.01',
  'GEM_PATH'     => '/path/to/.rvm/gems/ree-1.8.7-2010.01',
  'BUNDLE_PATH'  => '/path/to/.rvm/gems/ree-1.8.7-2010.01'  # If you are using bundler.
}

要取得準確的位置,請在 ~/.rvm/config/default 中查看

若要將 Capistrano 設定為在部署時自動信任專案 .rvmrc 檔案,請將以下內容加入您的 config/deploy.rb

namespace :rvm do
  task :trust_rvmrc do
    run "rvm rvmrc trust #{release_path}"
  end
end

然後使用 Capistrano 的掛勾功能,透過加入 after 掛勾來啟動它。

after "deploy", "rvm:trust_rvmrc"