部署Ruby on Rails应用到Heroku时遇应用崩溃错误求助
解决Ruby on Rails部署Heroku的应用错误及SQLite3加载问题
嘿,这俩问题都是Rails部署Heroku时的典型坑,我来帮你一步步搞定:
一、先解决核心的Gem::LoadError(SQLite3适配问题)
Heroku完全不支持SQLite3作为生产环境数据库——因为它是本地文件型数据库,Heroku的dyno(运行实例)重启后所有本地文件都会被清空,数据直接丢了。必须换成PostgreSQL才行,调整Gemfile的配置:
- 修改你的Gemfile,把sqlite3限定在开发/测试环境,生产环境用pg:
group :development, :test do gem 'sqlite3', '~> 1.4' end group :production do gem 'pg', '~> 1.1' end
- 重新安装依赖(跳过生产环境的gem,因为本地不需要pg):
bundle install --without production
- 提交修改到Git:
git add Gemfile Gemfile.lock git commit -m "Restrict sqlite3 to dev/test, use PostgreSQL for production"
- 重新推送到Heroku:
git push heroku main
这一步应该能直接解决Gem::LoadError,现在生产环境会加载pg而不是sqlite3了。
二、消除Ruby版本警告
你已经加了ruby '2.3.4'但警告还在,大概率是Gemfile.lock里的版本和你声明的不一致,或者Heroku没正确识别:
- 先确保本地确实装了Ruby 2.3.4(用rbenv/rvm这类版本管理工具切换过去),然后重新生成Gemfile.lock:
bundle install
- 提交更新后的Gemfile.lock:
git add Gemfile.lock git commit -m "Sync Gemfile.lock with Ruby 2.3.4" git push heroku main
- 如果还是有警告,直接给Heroku指定Ruby版本:
heroku config:set RUBY_VERSION=2.3.4
三、验证修复
部署完重启进程,再看日志确认:
heroku ps:restart heroku logs --tail
如果日志里没有Gem::LoadError,且应用能正常打开,就搞定了。
最后提个醒:Ruby 2.3.4已经停止维护好几年了,有不少安全漏洞,后续建议升级到3.2.x这类稳定版本,能避免更多兼容性问题。
内容的提问来源于stack exchange,提问作者chris17
相关产品推荐
相关产品推荐

