升级 Ruby on Python Elastic Beanstalk 实例

Posted

技术标签:

【中文标题】升级 Ruby on Python Elastic Beanstalk 实例【英文标题】:Upgrade Ruby on Python Elastic Beanstalk instance 【发布时间】:2019-10-05 03:50:07 【问题描述】:

我的 ruby -v 在我的 Python EB 实例上是 ruby 2.0.0p648 (2015-12-16) [x86_64-linux]

我需要 Ruby 2.2 来安装 sass。

如何获得 ruby​​ 2.2?

我的 .ebextensions 有这个:

packages:
  yum:
    ruby-devel: []
  rubygems:
    sass: []

但我仍然只得到一个旧版本的 Ruby。

【问题讨论】:

【参考方案1】:

不确定这是否可行,但您可以尝试在 .ebextensions 文件中添加 ruby​​ 主版本吗?我会推荐你​​可以使用的最新版本的 ruby​​,目前它是 2.6,所以也许:

packages:
  yum:
    ruby26-devel: []
  rubygems:
    sass: []

但是,如果仅此一项不起作用,您可能需要使用 CLI,有关更多想法,请参阅 this answer

【讨论】:

我正在尝试这个,但由于某种原因仍在安装 ruby​​ 2.0,这意味着同时安装了 ruby​​ 2.0 和 ruby​​ 2.2。运行ruby -v 仍然输出ruby2.0.0 不,我正在使用 yum 来管理 Elastic Beanstalk 上的包。我可以在 Elastic Beanstalk 上使用 RVM 吗?【参考方案2】:

ruby26-devel 可能在 amazon linux repo 中还没有。尝试安装ruby22-devel 并运行alternatives --set ruby /usr/bin/ruby2.2。您可以在 ebextensions 中运行命令

【讨论】:

【参考方案3】:

对于有相同问题但尚未解决的任何人。

packages:
    yum:
        ruby22: []
        ruby22-devel: []
container_commands:
    01-set_ruby22:
        command: "alternatives --set ruby /usr/bin/ruby2.2"
    02-install_sass:
        command: "gem install sass"

首先,通过 yum 我们安装最新支持的 Ruby 和 Ruby Devel 版本(我更喜欢 2.4,但问题是针对 2.2),之后,通过 container_commands,我们将当前的 ruby​​ 版本设置为最新版本,然后我们安装 sass

我在数字前加上前缀,因为它告诉容器命令我需要运行每个命令的顺序。

【讨论】:

以上是关于升级 Ruby on Python Elastic Beanstalk 实例的主要内容,如果未能解决你的问题,请参考以下文章

启动 Ruby on Rails 应用程序时无法通过 AWS Elastic Beanstalk“恭喜”屏幕

AWS Elastic Beanstalk Ruby on Rails 6 应用程序部署错误与 nginx

在 Elastic Beanstalk 环境上部署 ruby​​ on rails 应用程序时出现 AWS 数据库迁移错误

部署 Ruby on Rails 6 - AWS Elastic Beanstalk - Docker: ArgumentError: Missing `secret_key_base`

Elastic Beanstalk Ruby 进程消耗 CPU

ruby on rails升级资产预编译失败