私は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
を使用できます それを行うコマンド。