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