推送到Elastic Beanstalk时出现Rails捆绑错误

时间:2019-01-29 18:00:48

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

我在Heroku上部署了一个应用程序,目前正在尝试在AWS上创建相同的应用程序。 我已经复制了文件夹,在Github上创建了一个完整的独立存储库,并安装了ebcli,设置看起来不错。

当我尝试运行eb deploy时,出现以下错误:  [实例:i-03051e2a022886184]实例上的命令失败。返回码:1输出:(TRUNCATED)...:在find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException) from /opt/rubies/ruby-2.5.3/lib/ruby/site_ruby/2.5.0/rubygems.rb:308:in activate_bin_path'中     来自/opt/rubies/ruby-2.5.3/bin/bundle:23:in'。

我在网上查看,它说这是由于您的gemlock文件捆绑软件版本与实际捆绑软件版本之间不兼容造成的。

我试图将捆绑器版本更改为该版本,但是我放弃了并回到2.0.1,因为否则我必须安装太多的依赖项。 我再次删除了捆绑锁,但尝试部署时仍然遇到相同的错误。

在我的heroku版本中,它始终有效。

有什么办法解决吗?

非常感谢

2 个答案:

答案 0 :(得分:1)

几个月前,我们也从Heroku搬到了AWS,这可能需要一些自定义脚本才能使工作正常。

这将有助于您了解更多有关您的EB环境的信息,但我假设您在Amazon Linux 2.9.0(?)上将Ruby 2.5与Puma结合使用

不确定附带的捆绑软件版本是什么,但是我不认为它是2.x。因此,您还必须添加.ebextensions文件,然后安装首选的捆绑版本。

# .ebextensions/01_install_bundler.config

container_commands:
  install_bundler:
    command: “gem install bundler —-version 2.0.0”

有关AWS Linux customizations的更多信息

最终,我们对AWS环境更加满意(成本更低,性能更高),但是需要更多的工作来进行设置

答案 1 :(得分:0)

实际上存在问题,因为eb env中的捆绑程序版本比项目源中使用的捆绑程序版本早。

因此解决方案是使用小于或等于eb env安装版本的捆绑程序版本。

首先卸载了当前的捆绑软件:

  

gem卸载包

然后安装所需的一个:

  

gem install bundler -v 1.16.6

See more details