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

Posted

技术标签:

【中文标题】如何配置 capistrano 以使用我的 rvm 版本的 Ruby【英文标题】:How do I configure capistrano to use my rvm version of Ruby 【发布时间】:2010-12-31 00:44:33 【问题描述】:

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

有可能吗?

【问题讨论】:

我没有把它放在答案中,因为我希望其他人真的知道如何做到这一点,但从我的快速研究看来,您需要更改 @ 987654324@ 变量在默认值之前包含 RVM ruby​​ 的路径:kete.net.nz/documentation/topics/show/… 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

ruby-2.5.0

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

【讨论】:

【参考方案3】:

你有两个选择:

    使用 ssh 配置文件中的 PermitUserEnvironment 选项启用 .ssh 环境变量 使用 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

【讨论】:

我认为第一个 PATH 设置应该是 path/to/.rvm/rubies/ree-1.8.7 我的 RVM 安装使用 rubies 作为实际安装 ruby​​ 的目录 谢谢你,我在用头撞墙很久之后才发现这个。 这也适用于使用非标准 ruby​​ 位置的非 rvm 服务器安装(例如安装在/opt 中的 REE)。在这种情况下,要获得正确的路径,请使用which rubygem environment。您可能不需要设置GEM_HOME【参考方案4】:

见http://rvm.io/integration/capistrano/。 “通过 rvm capistrano 插件集成”看起来很成功。

还有http://rvm.io/deployment/

【讨论】:

+1 页面rvm.io/integration/capistrano 和rvm-capistrano gem 的使用【参考方案5】:

rvm-capistrano gem 是最好的选择。

Link to the official detailed usage of that gem。从那我猜这将获得 Ruby 的本地版本:

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

【讨论】:

我觉得比较官方的方式是set :rvm_ruby_string, :local 在 capistrano3 中,使用 capistrano-rvm,使用类似:set :rvm_ruby_version, 'jruby-1.7.13'【参考方案6】:

如果您的 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

【讨论】:

为此,我的开发机器上是否有 rvm 有什么关系?不是只有在生产机器上才有关系吗?

以上是关于如何配置 capistrano 以使用我的 rvm 版本的 Ruby的主要内容,如果未能解决你的问题,请参考以下文章

Capistrano使用rvm和git进行部署[git release fail]

使用 Capistrano 部署 Rails 5.1 / Webpacker 应用程序

Capistrano 3:运行自定义 shell 命令时无法识别捆绑器

capistrano 部署 - 基本命令失败

安装 RVM 后无法加载 Sass / Compass,与 Symfony2 中的 Assetic 一起使用

如何配置 Capistrano 以从本地 Git 存储库进行部署?