【问题标题】:Rails: How to get puma 3.11 for AWS Elasticbeanstalk application?Rails:如何为 AWS Elasticbeanstalk 应用程序获取 puma 3.11?
【发布时间】:2018-10-09 00:28:34
【问题描述】:

我正在尝试在新的 EC2 实例上部署 Rails 应用程序。 EB 使用的是 puma 2.16.0(已有 2 年历史)而不是我在 Gemfile.lock 中定义的版本 (3.11.0)。这对我来说是个问题,因为旧的 puma 版本依赖于旧版本的 rack gem。但是我的一个新依赖项需要最新版本的rack gem

EB 的当前平台:Puma 和 Ruby 2.3 在 64 位 Amazon Linux/2.4.4 上运行

所以 EB 自动使用旧的 puma 和旧的 rack 版本导致与我最新的 gems 冲突:

/opt/rubies/ruby-2.3.4/lib/ruby/gems/2.3.0/gems/bundler-1.15.0/lib/bundler/runtime.rb:317:in check_for_activated_spec!: 你已经激活机架 1.6.8,但您的 Gemfile 需要机架 2.0.5。在您的命令前添加 bundle exec 可以解决此问题。 (Gem::LoadError)

我看到安装了两个版本(EB 的默认版本和 Gemfile.lock 的版本):

[ec2-user gems]$ ls -l /opt/rubies/ruby-2.3.4/lib/ruby/gems/2.3.0/gems/puma*

puma-2.16.0

puma-3.11.4

有没有办法使用我们自己的 puma 版本?

EB 的当前平台:Puma 和 Ruby 2.3 在 64 位 Amazon Linux/2.4.4 上运行

【问题讨论】:

  • 当您看到第一个错误时,您正在运行什么命令?您是否尝试过在该命令前面加上 bundle exec <command>,就像消息所暗示的那样?
  • EB 管理(/abstracts)部署和应用程序重启命令。所以我认为应用程序不应覆盖或扩展管理其应用程序实例的方式。

标签: ruby-on-rails ruby amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

您使用的是相当旧版本的 ElasticBeanstalk Puma 平台 - 最新版本是 Puma with Ruby 2.5 running on 64bit Amazon Linux/2.7.2。不幸的是,这仍然伴随着 Puma 2.16。同时安装两个不同版本的 Puma 可能会导致问题。

我认为你有几个选择:

  1. 从 puma 切换到乘客。
  2. 将依赖 rack 的其他 gem 降级到可以与旧版本 rack 一起使用的版本
  3. 请求 AWS 支持升级平台中的 Puma。

【讨论】:

  • 是的,我也检查了最新的 EB 版本,才发现它运行的是相同的 puma 版本。
猜你喜欢
  • 2015-10-08
  • 2016-09-20
  • 2014-08-30
  • 2018-11-19
  • 2016-10-10
  • 2015-08-11
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
相关资源
最近更新 更多