支持
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"