#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 удалил его, потому что он слишком долго спал ?