部署至Heroku遇Ruby版本不存在及Bundler更新问题求助
问题解决方案
问题1:Heroku部署提示「ruby-2.6.1不存在」
原因:Heroku官方Ruby构建包已停止对Ruby 2.6.x版本的支持(Ruby 2.6已结束安全维护),因此无法找到该版本。
解决方案(推荐升级Ruby版本)
- 修改本地项目配置:
- 打开
Gemfile,将第一行的ruby "2.6.1"改为ruby "3.1.0"(你本地已安装此版本) - 更新
.ruby-version文件内容为3.1.0
- 打开
- 切换到Ruby 3.1.0环境:
rbenv local 3.1.0 ruby -v # 确认输出为ruby 3.1.0开头的版本信息 - 安装适配的Bundler并重新依赖:
gem install bundler bundle install - 提交修改并重新部署:
git add Gemfile Gemfile.lock .ruby-version git commit -m "升级Ruby版本至3.1.0以适配Heroku部署" git push heroku main
备选方案(不推荐,存在安全风险)
若暂时无法升级Ruby,可指定支持Ruby 2.6.x的旧版Heroku Ruby构建包(需自行查找官方历史版本中支持2.6的buildpack标签),执行命令:
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-ruby#对应标签版本号
注意:旧版构建包不再接收安全更新,长期使用会带来安全隐患。
问题2:gem update bundler失败,提示版本不兼容
原因:Bundler 2.5.6要求Ruby版本≥3.0.0,而你当前使用的Ruby 2.6.1不满足要求。
解决方案
安装Ruby 2.6.1兼容的Bundler版本:
gem install bundler -v "~> 2.2"
之后使用该版本执行bundle命令:
bundle _2.2.x_ install # 将x替换为实际安装的具体版本号,比如2.2.33
若需要锁定Bundler版本,可在Gemfile中添加:
gem 'bundler', '~> 2.2'
内容的提问来源于stack exchange,提问作者nourza
相关产品推荐
相关产品推荐

