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

Rails教程项目部署Heroku遇H10错误:应用无法加载

解决Heroku部署中CarrierWave::Storage::Fog未初始化的错误

从你提供的日志来看,核心问题是**uninitialized constant CarrierWave::Storage::Fog**——这说明你的Rails应用在生产环境(Heroku)中尝试使用CarrierWave的Fog存储,但对应的依赖gem没有正确安装或配置。

问题根源

Heroku不支持本地文件存储,所以教程会引导你用CarrierWave配合Fog对接云存储(比如AWS S3)。但如果fog相关的gem没有被包含在生产环境的Gemfile里,部署后Heroku找不到这个库,就会触发启动失败的错误。

分步解决方案

  1. 更新Gemfile
    打开你的Gemfile,确保生产环境组里包含了对应云存储的fog类gem(推荐用更具体的fog-aws而非通用fog):

    group :production do
      gem 'pg'
      gem 'fog-aws' # 对接AWS S3,若用其他云存储替换为对应fog gem
    end
    
  2. 安装依赖并提交代码
    在本地执行以下命令:

    bundle install --without production
    git add Gemfile Gemfile.lock
    git commit -m "Add fog-aws gem for production cloud storage"
    
  3. 重新部署到Heroku
    推送更新后的代码到Heroku:

    git push heroku master
    
  4. 确认CarrierWave配置
    检查config/initializers/carrierwave.rb,确保生产环境的存储配置正确,且通过Heroku环境变量传入云存储凭证(禁止硬编码敏感信息):

    CarrierWave.configure do |config|
      if Rails.env.production?
        config.storage = :fog
        config.fog_provider = 'fog/aws'
        config.fog_credentials = {
          provider: 'AWS',
          aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
          aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
          region: 'us-east-1' # 替换为你的S3存储区域
        }
        config.fog_directory = ENV['S3_BUCKET']
      else
        config.storage = :file # 开发环境使用本地存储
      end
    end
    

    然后在Heroku上设置对应的环境变量:

    heroku config:set AWS_ACCESS_KEY_ID=你的AWS密钥ID AWS_SECRET_ACCESS_KEY=你的AWS密钥 S3_BUCKET=你的S3桶名
    
  5. 验证Uploader设置
    打开app/uploaders/picture_uploader.rb,确保存储方式根据环境自动切换:

    class PictureUploader < CarrierWave::Uploader::Base
      # 按环境选择存储策略
      storage Rails.env.production? ? :fog : :file
    
      # 其他上传相关配置...
    end
    

最后重启Heroku的web进程:

heroku restart

完成这些操作后,应用应该就能正常启动加载了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:41:58