AWS Elastic Beanstalk部署Rails应用Ruby版本匹配异常排查
问题原因及解决方案
核心原因
错误本质是部署包中的Gemfile.lock文件记录的Ruby版本与Beanstalk环境的Ruby版本不匹配,而非你本地Gemfile的内容问题。
bundle install退出状态18通常由Ruby版本兼容问题触发——Beanstalk部署时会优先读取Gemfile.lock里指定的Ruby版本(旧的3.0.0),但你的环境实际运行的是3.0.5,两者冲突导致报错。
可能的触发场景
- 你之前用Ruby 3.0.0生成过Gemfile.lock,后来修改了Gemfile里的Ruby版本为3.0.5,但没有更新Gemfile.lock,或者更新后没把新的lock文件加入部署包。
- 部署的代码仓库里还保留着旧的Gemfile.lock,导致Beanstalk拉取到的是旧版本的lock文件。
解决步骤
- 删除旧的Gemfile.lock:在本地项目根目录执行:
rm Gemfile.lock - 用Ruby 3.0.5重新生成lock文件:先通过
ruby -v确认本地当前Ruby版本为3.0.5,再执行:bundle install - 提交并重新部署:把新生成的Gemfile.lock提交到代码仓库,再重新运行
eb deploy或通过EB控制台部署更新后的代码。 - 验证环境配置:通过
eb config命令查看环境的RUBY_VERSION参数,确认其值为3.0.5,避免环境本身配置的版本与预期不符。
内容的提问来源于stack exchange,提问作者user2417339
相关产品推荐
相关产品推荐

