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

Rails 5部署Heroku遇Gem::LoadError错误,求技术协助

解决Heroku部署时的PostgreSQL Gem加载错误

我来帮你排查这个部署问题!从你的日志来看,核心错误是预编译资产时无法加载pg gem,虽然你的Gemfile里已经包含了它,但结合你的配置,主要有两个关键问题需要修正:

1. 修正Gemfile的分组配置

首先,rails_12factor是专门为Rails生产环境设计的gem,不需要放在development和test组里;另外可以保留pg的版本声明(确保兼容ActiveRecord 5.1.4即可)。修改后的Gemfile片段如下:

group :development, :test do
  gem 'pg', '~> 1.0.0'
  # gem 'sqlite3' # 保持注释状态
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'capybara', '~> 2.13'
  gem 'selenium-webdriver'
end

group :production do
  gem 'pg', '~> 1.0.0'
  gem 'rails_12factor' # 只保留在生产组
end

group :development do
  gem 'web-console', '>= 3.3.0'
end

2. 修正Production环境的数据库配置

Heroku会自动为你创建PostgreSQL数据库,并通过DATABASE_URL环境变量提供连接信息,你不需要硬编码username和password(这些是你本地的数据库信息,在Heroku上无效)。修改config/database.yml的production部分:

production:
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  url: <%= ENV['DATABASE_URL'] %> # 使用Heroku提供的环境变量

3. 避免预编译资产时初始化数据库(可选但推荐)

在config/environments/production.rb中添加或修改以下配置,让资产预编译过程不加载ActiveRecord,从根源避免数据库相关的加载错误:

config.assets.initialize_on_precompile = false

4. 重新部署到Heroku

完成以上修改后,执行以下命令更新代码并部署:

bundle install --without development test
git add Gemfile Gemfile.lock config/database.yml config/environments/production.rb
git commit -m "Fix Heroku deployment: correct pg and database config"
git push heroku master

这些修改的作用:

  • 确保pg gem在生产环境被正确安装和加载
  • 让Heroku使用自动配置的数据库连接信息,避免本地配置导致的连接失败
  • 减少资产预编译过程中的不必要依赖,避免加载错误

内容的提问来源于stack exchange,提问作者Abdul Mukheem Shaik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:21:35