【发布时间】: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