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