Heroku не удается подключить Redis

#ruby-on-rails #heroku #redis

Вопрос:

Я открываю приложение, которое спит уже почти год. Тем временем Rediscloud отменил БД. У меня есть новая база данных Rediscloud с REDISCLOUD_URL в формате redis://по умолчанию:(ключ)@redis-(путь). Но Sidekiq не может подключиться к Rediscloud.

Мой Redislabs.com ссылка на мое приложение утверждает, что «Эта подписка не содержит никаких баз данных».

Нужно ли мне каким-то образом запускать/инициализировать базу данных rediscloud ? default: Генерирует ли пропущенный ACL авторизации ? Или проблема связана с моей версией redis gem 4 ?

Вот мой абстрактный файл Gemfile. Раньше он отлично работал год назад, до того, как я перевел приложение в режим сна. Вот почему я еще не изменил версии, и я все еще на heroku-18 :

 ruby '2.6.5' gem 'rails', '~gt; 6.0.2', 'gt;= 6.0.2.1' gem 'redis', '~gt; 4.0' gem 'sidekiq' gem 'sidekiq-failures', '~gt; 1.0'  

Вот мои журналы :

 2021-12-03T11:25:25.593016 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:230:in `process' 2021-12-03T11:25:25.593016 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:125:in `call' 2021-12-03T11:25:25.593016 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:286:in `block in info' 2021-12-03T11:25:25.593017 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:52:in `block in synchronize' 2021-12-03T11:25:25.593017 00:00 app[worker.1]: /app/vendor/ruby-2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize' 2021-12-03T11:25:25.593017 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:52:in `synchronize' 2021-12-03T11:25:25.593018 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:285:in `info' 2021-12-03T11:25:25.593018 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.6/lib/sidekiq.rb:118:in `block in redis_info' 2021-12-03T11:25:25.593018 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.6/lib/sidekiq.rb:97:in `block in redis' 2021-12-03T11:25:25.593019 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/connection_pool-2.2.2/lib/connection_pool.rb:65:in `block (2 levels) in with' 2021-12-03T11:25:25.593019 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/connection_pool-2.2.2/lib/connection_pool.rb:64:in `handle_interrupt' 2021-12-03T11:25:25.593019 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/connection_pool-2.2.2/lib/connection_pool.rb:64:in `block in with' 2021-12-03T11:25:25.593019 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/connection_pool-2.2.2/lib/connection_pool.rb:61:in `handle_interrupt' 2021-12-03T11:25:25.593020 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/connection_pool-2.2.2/lib/connection_pool.rb:61:in `with' 2021-12-03T11:25:25.593020 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.6/lib/sidekiq.rb:94:in `redis' 2021-12-03T11:25:25.593020 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.6/lib/sidekiq.rb:112:in `redis_info' 2021-12-03T11:25:25.593020 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.6/lib/sidekiq/cli.rb:61:in `run' 2021-12-03T11:25:25.593020 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/sidekiq-6.0.6/bin/sidekiq:12:in `lt;top (required)gt;' 2021-12-03T11:25:25.593021 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/bin/sidekiq:23:in `load' 2021-12-03T11:25:25.593021 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/bin/sidekiq:23:in `lt;top (required)gt;' 2021-12-03T11:25:25.593022 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli/exec.rb:74:in `load' 2021-12-03T11:25:25.593022 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli/exec.rb:74:in `kernel_load' 2021-12-03T11:25:25.593022 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli/exec.rb:28:in `run' 2021-12-03T11:25:25.593022 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli.rb:465:in `exec' 2021-12-03T11:25:25.593022 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run' 2021-12-03T11:25:25.593022 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command' 2021-12-03T11:25:25.593022 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/vendor/thor/lib/thor.rb:387:in `dispatch' 2021-12-03T11:25:25.593023 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli.rb:27:in `dispatch' 2021-12-03T11:25:25.593023 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/vendor/thor/lib/thor/base.rb:466:in `start' 2021-12-03T11:25:25.593023 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/cli.rb:18:in `start' 2021-12-03T11:25:25.593023 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/exe/bundle:30:in `block in lt;top (required)gt;' 2021-12-03T11:25:25.593023 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/lib/bundler/friendly_errors.rb:124:in `with_friendly_errors' 2021-12-03T11:25:25.593023 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/bundler-2.0.2/exe/bundle:22:in `lt;top (required)gt;' 2021-12-03T11:25:25.593024 00:00 app[worker.1]: /app/bin/bundle:113:in `load' 2021-12-03T11:25:25.593024 00:00 app[worker.1]: /app/bin/bundle:113:in `lt;maingt;' 2021-12-03T11:25:25.594276 00:00 app[worker.1]: /app/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362:in `rescue in establish_connection': Error connecting to Redis on redis-11993.c1.eu-west-1-3.ec2.cloud.redislabs.com:11993 (SocketError) (Redis::CannotConnectError)  

Моя конфигурация Redis :

 **Gemfile**  gem 'redis', '~gt; 4.0'  **Gemfile.lock**  redis (4.1.3)  **config/cable.yml:** development:  adapter: redis  url: lt;%= ENV.fetch("REDISCLOUD_URL") { "redis://localhost:6379/1" } %gt;  channel_prefix: _wadzatsong_development  test:  adapter: test  production:  adapter: redis  url: lt;%= ENV.fetch("REDISCLOUD_URL") { "redis://localhost:6379/1" } %gt;   channel_prefix: _wadzatsong_production    **/config/initializers/redis.rb:**  $redis = Redis.new    if Rails.env=="production"  url = ENV["REDISCLOUD_URL"]  elsif Rails.env=="development"  url = "redis://localhost:6379/1"  end    if url  Sidekiq.configure_server do |config|  config.redis = { url: url }  end   Sidekiq.configure_client do |config|  config.redis = { url: url }  end  $redis = Redis.new(:url =gt; url)  end  

При разработке он тоже терпит неудачу :

 rails s   Started GET "/" for 127.0.0.1 at 2021-12-04 16:53:56  0100    PG::ConnectionBad (could not connect to server: No such file or directory  Is the server running locally and accepting  connections on Unix domain socket "/tmp/.s.PGSQL.5432"?  ):  

Комментарии:

1. Не могли бы вы, пожалуйста, опубликовать свою конфигурацию redis

2. Сделал это прямо сейчас @Maxence 🙂

3. Также вы не сказали, работает ли это в разработке ? Я не вижу ничего плохого, может быть, дважды проверьте правильность переменной среды «REDISCLOUD_URL»

4. Да, @Maxence, я думаю, это сложная проблема. Это также не работает при разработке : Запущен GET «/» для 127.0.0.1 в 2021-12-04 16:53:56 0100 PG::ConnectionBad (не удалось подключиться к серверу: Нет такого файла или каталога, сервер работает локально и принимает подключения в доменном сокете Unix «/tmp/.s.PGSQL.5432»? ):

5. @Maxence, как я могу дважды проверить переменную среды ? Разве мне не нужно инициализировать свой Rediscloud после того, как Redis удалил его, потому что он слишком долго спал ?