我在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版本中,它始终有效。
有什么办法解决吗?
非常感谢
答案 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