Heroku部署Ruby on Rails应用报错:RubyGems版本不兼容求助
解决Heroku推送Ruby on Rails应用时RubyGems版本不兼容问题
核心问题
Heroku当前使用的RubyGems 3.1.6版本,低于ffi-1.17.0-x86_64-linux要求的≥3.3.22版本,导致依赖安装失败。
解决步骤
1. 锁定RubyGems版本到符合要求的版本
在Gemfile中添加指定RubyGems更新包的代码:
# Gemfile新增该行 gem 'rubygems-update', '3.3.22'
然后在本地执行以下命令:
bundle install bundle update rubygems-update update_rubygems
最后重新生成锁文件并指定平台:
bundle lock --add-platform x86_64-linux --add-platform ruby
2. 调整Heroku的Ruby Buildpack版本
通过Heroku CLI设置支持更高RubyGems版本的Ruby Buildpack(需确认所选buildpack版本包含的RubyGems≥3.3.22):
heroku buildpacks:set heroku/ruby#v242
3. 降级ffi版本绕开版本要求
如果不需要ffi-1.17.0的特定功能,直接在Gemfile中指定更低版本的ffi:
# Gemfile修改该行 gem 'ffi', '< 1.17.0'
执行bundle install后重新生成锁文件,再推送代码至Heroku。
4. 清空Heroku缓存
缓存可能残留旧依赖,执行以下命令清除:
heroku repo:purge_cache -a 你的应用名称
之后重新推送代码即可。
内容的提问来源于stack exchange,提问作者Fabien Goussen
相关产品推荐
相关产品推荐

