Rails6应用部署Heroku失败:Ruby版本不匹配问题求助
Rails6部署Heroku时Ruby版本不匹配问题解决
问题概述
将Rails6应用部署到Heroku后,构建成功但应用立即崩溃。执行heroku run rake db:migrate时出现版本不匹配错误:
Your Ruby version is 2.7.0, but your Gemfile specified 2.6.10
本地环境中,Gemfile已指定ruby '2.6.10',Gemfile.lock的Ruby版本为2.6.10p210,本地ruby -v返回一致版本,但Heroku仍使用2.7.0。
解决步骤
- 添加
.ruby-version文件:在项目根目录创建.ruby-version文件,内容仅一行:2.6.10。提交该文件并推送到Heroku,确保Heroku明确读取指定的Ruby版本。 - 设置官方Ruby Buildpack:执行命令
heroku buildpacks:set heroku/ruby,确保项目使用Heroku官方的Ruby构建包,避免版本识别异常。 - 重新部署并迁移:推送修改后的代码到Heroku,然后执行
heroku run rake db:migrate完成数据库迁移,最后执行heroku restart重启应用。
说明
- package.json中的
start脚本仅用于启动应用,不会影响Ruby版本,无需修改。 - Procfile不需要指定Ruby版本,版本控制主要依赖Gemfile和
.ruby-version文件。Heroku默认会优先读取.ruby-version的版本配置,确保与本地环境一致。
内容的提问来源于stack exchange,提问作者Peter T. Walker
相关产品推荐
相关产品推荐

