sql >> Databáze >  >> NoSQL >> Redis

Redis se místo REDIS_URL pokouší připojit k localhost na Heroku

Napadají mě dvě možnosti:

  • Nastavuje něco ENV['REDIS_URL'] před spuštěním inicializátoru? Možná máte například .env soubor zkontrolován do git, který přepisuje proměnnou Heroku?

  • Říkáte, že tento kód pochází z redis.rb . Máte config/initializers/resque.rb taky? Co třeba config/resque.yml ? Kterákoli z nich může být také pokusu o otevření připojení Redis. (Pokud byste mohli odeslat celou stopu zásobníku vaší chyby, můžete to potvrdit nebo vyloučit.) Nebo používáte Redis pro něco jiného než Resque?

Můžete také provést nějaké ladění printf a změnit svůj inicializátor na:

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

To by vám mělo pomoci objasnit, co se děje. (Možná budete muset použít Rails.logger.info místo puts .)

UPRAVIT: To trasování zásobníku je velmi užitečné! Jistě, váš vlastní inicializátor tam vůbec není, ale existuje jiný kód, který se pokouší načíst své vlastní redis připojení, zde:

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)>'

Když se podíváte na ten drahokam, můžete vidět, že dělá toto:

require 'resque'

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

Takže si myslím, že odpovědí je nastavit RAILS_RESQUE_REDIS navíc na REDIS_URL . Můžete použít Heroku config:set příkaz k tomu.



  1. MongoDB, MapReduce a řazení

  2. Jak funguje převzetí služeb při selhání ServiceStack PooledRedisClientManager?

  3. Převést datum z milisekund na objekt ISODate

  4. Jak zobrazit verzi funkce kompatibility v MongoDB