Heroku部署Ruby 3.0.4失败:为何仍尝试安装Ruby 2.7.0?
Heroku部署Ruby 3.0.4失败,自动尝试安装2.7.0的排查方案
以下是针对性的排查和解决步骤:
检查当前构建包列表
先执行命令查看已配置的构建包:heroku buildpacks --app myapp确认是否有非官方Ruby构建包或其他可能触发Ruby版本检测的构建包存在。如果
heroku/ruby不在列表中,说明Heroku可能在使用默认隐式构建逻辑,或者其他构建包干扰了版本检测。重新添加并优先官方Ruby构建包
手动添加官方Ruby构建包并设置为最高优先级,避免其他构建包先处理环境:heroku buildpacks:add heroku/ruby --app myapp heroku buildpacks:promote heroku/ruby --app myapp严格验证部署代码中的版本配置
确保部署分支的代码满足:.ruby-version文件已提交到Git,内容为3.0.4,未被.gitignore排除- Gemfile开头明确声明
ruby '3.0.4',无注释或拼写错误 - Gemfile.lock中的
RUBY VERSION字段为ruby 3.0.4p208(对应具体补丁版本),且该文件已提交
清除Heroku构建缓存
旧缓存可能残留历史版本配置,执行清除后重新部署:heroku builds:cache:purge --app myapp确认栈兼容性
检查当前使用的Heroku栈:heroku stack --app myapp如果是Heroku-18,切换到Heroku-20(Ruby 3.0.4仅在Heroku-20及以上栈支持):
heroku stack:set heroku-20 --app myapp移除冲突的自定义环境变量
Heroku官方优先读取.ruby-version和Gemfile中的版本声明,自定义CUSTOM_RUBY_VERSION可能引发冲突,执行移除:heroku config:unset CUSTOM_RUBY_VERSION --app myapp
内容的提问来源于stack exchange,提问作者Bastien
相关产品推荐
相关产品推荐

