如果您能提供帮助或希望成为维护者之一,请开始帮助我们。您可以在 RVM Github 组织 中找到更多与 RVM 相关的项目。
使用 RVM 与 Capistrano
集成的优势
将 RVM 与 Capistrano 集成可在 Capistrano 部署任务的上下文中提供 RVM 的正常优势。这些包括- 确保所有 Capistrano 任务使用正确的 Ruby 和 gems(包括 gemset 支持)。
- 通过 Capistrano 自动 安装 RVM 和 Ruby。仅当使用 rvm-capistrano gem 时才可能,解释为选项 1 如下。
- 通过 Capistrano 管理 gemsets,允许您将项目 gems 安装或更新为部署的一部分。
集成选择
有四种选择,从最新到最旧列出。第一个是首选,因为它减少了配置并且不包含硬编码路径。
- 对于 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"