如果您能提供協助或希望成為維護人員之一,請直接開始協助。您可以在 RVM Github 組織 找到更多與 RVM 相關的專案。
將 RVM 與 Capistrano 搭配使用
整合的優點
將 RVM 與 Capistrano 整合,在 Capistrano 部署任務的背景下執行時,可提供 RVM 的一般優點。這些優點包括- 確保所有 Capistrano 任務使用正確的 Ruby 和寶石(包括 gemset 支援)。
- 透過 Capistrano 自動 安裝 RVM 和 Ruby。僅在使用 rvm-capistrano 寶石時才有可能,說明如下方 選項 1。
- 透過 Capistrano 管理 gemset,讓您可以在部署過程中安裝或更新專案寶石。
整合選項
有四種選項,以下從最新到最舊列出。第一個選項較佳,因為它減少設定,且不包含硬編碼路徑。
- 使用 RVM >= 1.11.3,使用 rvm-capistrano 寶石。
- 使用較舊的 RVM 但仍 >= 1.0.1,使用內建的 capistrano 外掛程式(它不是寶石)。
-
使用 capistrano
:default_environment
設定。 -
使用 sshd
PermitUserEnvironment
選項,以允許透過$HOME/.ssh/environment
檔案進行設定。很遺憾,這尚未有文件說明。
使用 rvm-capistrano 寶石
請參閱 寶石。 請注意,在此設定中,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)安裝,請將下列內容加入 Capfile
或 deploy.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"