34

有谁知道我如何告诉capistrano在我推送的服务器上使用我的默认rvm版本的 ruby​​。它坚持使用系统版本。

甚至可能吗?

4

6 回答 6

37

你有两个选择:

  1. PermitUserEnvironment使用ssh 配置文件中的选项启用 .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' 
}

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

于 2009-12-30T09:23:02.490 回答
23

如果您的 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
于 2011-01-16T00:17:31.193 回答
10

rvm-capistrano宝石 是最好的方法。

链接到该 gem 的官方详细用法。从那我猜这将获得 Ruby 的本地版本:

set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"") # Read from local system
于 2012-05-22T16:36:55.377 回答
7

See http://rvm.io/integration/capistrano/. "Integration via the rvm capistrano plugin" looks like a winner.

And http://rvm.io/deployment/

于 2010-08-31T22:48:53.653 回答
1

我发现最简单的方法是添加您想要的版本。只需添加

ruby-2.5.0

将字符串(或您想要的版本)放入根文件夹中的 .ruby-version 中。无需配置 deploy.rb 或一些相当老套的解决方案。

于 2019-12-31T06:07:37.507 回答
0

set :rbenv_ruby, "3.0.0"对于 rbenv ,不要忘记更改Capfile:)

于 2021-03-07T03:30:04.627 回答