私は2つの可能性を考えることができます:
-
ENV['REDIS_URL']を設定しているものです イニシャライザが実行される前に?たとえば、.envがあるとします。 Heroku変数をオーバーライドしているgitにチェックインされたファイル? -
このコードは
redis.rbからのものだとあなたは言います 。config/initializers/resque.rbはありますか また?config/resque.ymlはどうですか ?それらのいずれかがまたである可能性があります Redis接続を開こうとしています。 (エラーのスタックトレース全体を投稿できる場合は、これを確認するか、除外することができます。)または、Resque以外の目的でRedisを使用していますか?
また、printfデバッグを実行し、初期化子を次のように変更することもできます。
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
それはあなたが何が起こっているのかを明確にするのに役立つはずです。 (Rails.logger.infoを使用する必要がある場合があります putsの代わりに 。)
編集: そのスタックトレースは非常に役立ちます!案の定、独自のイニシャライザーはまったく含まれていませんが、独自のredis接続をロードしようとしている他のコードがあります:
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)>'
その宝石を調べると、それがこれを行っていることがわかります:
require 'resque'
config = ENV.fetch("RAILS_RESQUE_REDIS", "127.0.0.1:6379")
Resque.redis = config
したがって、答えはRAILS_RESQUE_REDISを設定することだと思います さらに REDIS_URLへ 。 Herokuのconfig:setを使用できます それを行うコマンド。