如何配置capistrano以使用我的rvm版本的Ruby

Sam*_*ron 32 ruby capistrano rvm

有谁知道我怎么能告诉capistrano在我推动的服务器上使用我的默认rvm版本的ruby.它坚持使用系统版本.

它甚至可能吗?

Sim*_*tti 37

您有两种选择:

  1. 使用PermitUserEnvironmentssh配置文件中的选项启用.ssh环境变量
  2. 使用capistrano :default_environment设置

对于第二个选项,只需在deploy.rb文件中添加以下行

set :default_environment, { 
  'PATH' => "/path/to/.rvm/ree-1.8.7-2009.10/bin:/path/to/.rvm/gems/ree/1.8.7/bin:/path/to/.rvm/bin:$PATH",
  'RUBY_VERSION' => 'ruby 1.8.7',
  'GEM_HOME' => '/path/to/.rvm/gems/ree/1.8.7',
  'GEM_PATH' => '/path/to/.rvm/gems/ree/1.8.7' 
}
Run Code Online (Sandbox Code Playgroud)

要获得准确的位置,请查看 cat ~/.rvm/default

  • `rvm info`将为您提供所有正确的路径等. (5认同)

小智 22

如果你的rvm版本是开发和生产机器上的最新版本,请将其添加到deploy.rb:

set :rvm_ruby_string, '1.9.2@yourapp' # you probably have this already
set :rvm_type, :user # this is the money config, it defaults to :system
Run Code Online (Sandbox Code Playgroud)

  • 为此,如果rvm在我的开发机器上,为什么重要?它不应该只是在生产机器上吗? (3认同)

Ken*_*llB 10

rvm-capistrano宝石 是最好的一段路要走.

链接到该宝石的官方详细用法.从那以后我猜这将获得本地版本的Ruby:

set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"") # Read from local system
Run Code Online (Sandbox Code Playgroud)

  • 我认为更正式的方式是`set:rvm_ruby_string,:local` (3认同)
  • 在capistrano3中,使用[capistrano-rvm](https://github.com/capistrano/rvm),使用类似:`set:rvm_ruby_version,'jruby-1.7.13'` (3认同)

Mat*_*oti 7

http://rvm.io/integration/capistrano/."通过rvm capistrano插件集成"看起来像赢家.

http://rvm.io/deployment/