sql >> Databasteknik >  >> NoSQL >> Redis

Redis försöker ansluta till localhost på Heroku istället för REDIS_URL

Jag kan tänka mig två möjligheter:

  • Är något som ställer in ENV['REDIS_URL'] innan initialiseraren körs? Till exempel kanske du har en .env fil checkas in i git som åsidosätter Heroku-variabeln?

  • Du säger att den här koden är från redis.rb . Har du en config/initializers/resque.rb också? Vad sägs om config/resque.yml ? Båda av dessa kan också vara försöker öppna en Redis-anslutning. (Om du kunde lägga upp hela stackspårningen av ditt fel kan du bekräfta detta eller utesluta det.) Eller använder du Redis för något annat än Resque?

Du kan också göra lite printf-felsökning och ändra din initialiserare till att säga:

if Rails.env.production?
  puts "production: #{ENV['REDIS_URL']}"
  uri = URI.parse(ENV["REDIS_URL"])
else
  puts "not production"
  uri = URI.parse("redis://localhost:6379")
end

Det borde hjälpa dig att klargöra vad som händer. (Du kan behöva använda Rails.logger.info istället för puts .)

EDIT: Den där stackspårningen är till stor hjälp! Visst, din egen initialiserare finns inte alls där, men det finns annan kod som försöker ladda sin egen redis-anslutning, här:

remote:        /tmp/build_329306a238b046dda86a54d29db48f4c/vendor/bundle/ruby/2.4.0/gems/resque-web-0.0.9/config/initializers/resque_config.rb:4:in `<top (required)>'

Om du slår upp den pärlan kan du se att den gör så här:

require 'resque'

config = ENV.fetch("RAILS_RESQUE_REDIS", "127.0.0.1:6379")
Resque.redis = config

Så jag tror att svaret är att ställa in RAILS_RESQUE_REDIS utöver till REDIS_URL . Du kan använda Heroku config:set kommando för att göra det.



  1. hur man strukturerar ett sammansatt index i mongodb

  2. Importera CSV med Mongoose Schema

  3. HBase Clusters Data Synchronization med HashTable/SyncTable-verktyget

  4. Hur kan jag se var mongoDB lagrar data? (det är inte standard /data/db!)