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

Heroku部署带CRUD的Rails应用遇Redis连接拒绝错误求助

解决Heroku上Rails应用的Redis连接拒绝错误

从你的错误日志和配置信息来看,问题很明确:你的Rails应用在尝试连接本地的Redis服务(127.0.0.1:6379),但Heroku的生产环境里并没有默认运行本地Redis实例,所以才会抛出Errno::ECONNREFUSED(连接被拒绝)的错误。下面是具体的解决步骤:

具体解决步骤

  • 为应用添加Heroku Redis服务:
    Heroku提供官方的Redis插件,你可以通过以下命令给painting-art应用添加免费的入门级实例:

    heroku addons:create heroku-redis:hobby-dev --app painting-art
    

    执行完这个命令后,Heroku会自动为你的应用添加REDIS_URL环境变量,指向云端的Redis服务地址。

  • 验证环境变量是否生效:
    再次执行配置检查命令,确认REDIS_URL已经存在:

    heroku config --app painting-art
    

    你应该能看到类似REDIS_URL: redis://h:xxxxxx@xxxx.compute-1.amazonaws.com:xxxx的条目。

  • 修改Rails应用的Redis配置:
    根据你的应用使用Redis的场景,调整对应的配置文件,确保它读取REDIS_URL环境变量,而不是硬编码本地地址:

    • 如果用Redis做缓存:在config/environments/production.rb中修改:
      config.cache_store = :redis_cache_store, { url: ENV['REDIS_URL'] }
      
    • 如果用Redis存储会话:在config/environments/production.rb中设置:
      config.session_store :redis_store, servers: ENV['REDIS_URL']
      
    • 如果是Sidekiq等后台任务依赖Redis:在config/sidekiq.yml中添加:
      :url: <%= ENV['REDIS_URL'] %>
      
      或者在config/initializers/sidekiq.rb中配置:
      Sidekiq.configure_server do |config|
        config.redis = { url: ENV['REDIS_URL'] }
      end
      
      Sidekiq.configure_client do |config|
        config.redis = { url: ENV['REDIS_URL'] }
      end
      
      特别注意:如果你的代码里硬写了127.0.0.1:6379,一定要替换成读取ENV['REDIS_URL'],这是解决问题的核心!
  • 重新部署并重启应用:
    保存配置修改后,提交代码并重新部署到Heroku:

    git add .
    git commit -m "Update Redis config to use Heroku Redis service"
    git push heroku main
    

    然后重启应用确保新配置生效:

    heroku restart --app painting-art
    

完成以上步骤后,你的应用应该就能正常连接到Heroku提供的Redis服务,500错误也就解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:53:19