sql >> データベース >  >> NoSQL >> Redis

Redisは、REDIS_URLではなくHerokuのローカルホストに接続しようとします

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



    1. MongoDBの原子性、分離、並行性

    2. PVとPVCを使用したKubernetesNFSストレージ

    3. NodesJS + Passport + RedisStoreのシリアル化と逆シリアル化を実装しますか?

    4. redis-py:StrictRedis()とRedis()の違いは何ですか?