You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Rails应用至Heroku时遇Gem::LoadError错误求助

解决Heroku部署Rails应用时的sqlite3 Gem::LoadError问题

核心排查方向及解决步骤

1. 确认production环境数据库配置正确

  • 打开config/database.yml,必须确保production区块使用postgresql适配器,不能残留sqlite3相关配置,示例配置如下:
    production:
      adapter: postgresql
      url: <%= ENV['DATABASE_URL'] %>
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
      timeout: 5000
    
  • 排查项目所有代码/配置文件,确保没有在production环境下主动引用sqlite3的逻辑,比如初始化脚本、模型中的硬编码调用,找到后删除或替换为适配PostgreSQL的代码。

2. 修正assets预编译的环境依赖

Heroku部署时默认执行rails assets:precompile,若预编译过程意外依赖了development/test环境的gem(比如sqlite3),会触发加载错误,可通过两种方式处理:

  • 方式一:本地预编译后推送
    1. 本地执行production环境的assets预编译:RAILS_ENV=production bundle exec rails assets:precompile
    2. 将生成的public/assets目录加入git:git add public/assets
    3. 重新推送代码到Heroku:git push heroku main
  • 方式二:确保预编译依赖正确
    对于Rails 5+版本,确认Gemfile中没有在production组意外引入dev/test相关gem,同时保证sprockets等assets相关gem在production组中。

3. 重新同步production环境依赖

  • 本地仅安装production环境所需gem:bundle install --without development test
  • 提交更新后的Gemfile.lock到git:git add Gemfile.lock
  • 重新部署到Heroku:git push heroku main

4. 验证Heroku的环境变量设置

  • 检查Heroku上的RAILS环境:heroku config:get RAILS_ENV
  • 若返回值不是production,手动设置环境变量:heroku config:set RAILS_ENV=production

内容的提问来源于stack exchange,提问作者OBay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 00:07:32