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

无法将Rails项目部署至Heroku:rails aborted错误求助

排查方案:Gitpod部署Rails项目到Heroku遇sqlite3适配器加载失败

核心问题本质

Heroku生产环境默认使用PostgreSQL数据库,你的项目在生产环境下尝试加载仅配置在development/test组的sqlite3,导致依赖缺失触发报错。

分步排查操作

  1. 核对config/database.yml生产环境配置

    • 打开文件确认生产环境(production)的适配器是postgresql,而非sqlite3,正确配置示例:
      production:
        adapter: postgresql
        encoding: unicode
        pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
        url: <%= ENV.fetch("DATABASE_URL") %>
      
    • 确保生产环境块内没有任何sqlite3相关配置项。
  2. 修正Gemfile的数据库依赖分组

    • 确保sqlite3仅归属development, :test组,同时为生产环境添加pg依赖:
      group :development, :test do
        gem 'sqlite3', '~> 1.4'
      end
      
      group :production do
        gem 'pg'
      end
      
    • 在Gitpod终端执行bundle install --without development test,验证生产环境依赖是否正确安装。
  3. 检查Gitpod环境变量与bundle配置

    • 执行echo $RAILS_ENV,确认没有误设为development(会强制加载开发环境依赖)。
    • 执行echo $BUNDLE_WITHOUT,确认变量值包含development:test,确保bundle安装时跳过开发测试组gem。
  4. 本地模拟生产环境验证

    • 在Gitpod中执行RAILS_ENV=production rails s,尝试启动生产环境服务器,复现报错则优先解决本地环境问题。
    • 执行bundle exec rake assets:precompile RAILS_ENV=production,确认资产预编译过程未依赖sqlite3。
  5. 核对Heroku端配置

    • 登录Heroku控制台进入项目Settings页,确认RAILS_ENV设置为production。
    • 查看Heroku构建日志,确认bundle install阶段存在Skipping group development类的记录,说明已正确跳过开发测试组gem。
  6. 重置Gitpod工作区

    • 关闭当前工作区,创建全新工作区重新克隆项目,避免旧环境残留配置干扰。
    • 在新工作区重新执行bundle install、git commit、heroku create、git push heroku master的完整部署流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:02:00