Использование Redis в Heroku для API React и Rails - PullRequest
0 голосов
/ 27 мая 2020

У меня есть Rails API, развернутый на heroku, который обслуживает страницу React. js Stati c. Оба они развернуты на heroku, и они общаются через ссылку API. Моя борьба возникает при использовании Redis и Sidekiq.

В моем Rails API я получил ссылку RedisTo Go Сконфигурировано без проблем, но когда я go захожу в свое приложение React и пытаюсь отправить приглашение по электронной почте Я получаю это сообщение Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED). Я подумал, что если он настроен на моем бэкэнде, он будет работать с моим приложением страницы ответа stati c.

Sidekiq.yml

---
:verbose: false
:concurrency: 3
staging:
  :concurrency: 1
production:
  :concurrency: 5
:queues:
  - [mailers,2]
  - slack_notifications
  - mixpanel
  - invoices
  - default
  - rollbar

Redis.rb

uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:url => uri)

sidekiq.rb

Sidekiq::Extensions.enable_delay!

unless Rails.env == 'development' || Rails.env == 'test'
  Sidekiq.configure_server do |config|
    config.redis = {
      url: Rails.application.credentials.redis_url,
      password: Rails.application.credentials.redis_password
    }
  end

  Sidekiq.configure_client do |config|
    config.redis = {
      url: Rails.application.credentials.redis_url,
      password: Rails.application.credentials.redis_password
    }
  end
end

# Turn off backtrace if at all memory issues are popping up as
# backtrace occupies to much memory on redis
# number of lines of backtrace and number of re-tries
Sidekiq.default_worker_options = { backtrace: false, retry: 3 }

Sidekiq.configure_server do |config|
  # runs after your app has finished initializing
  # but before any jobs are dispatched.
  config.on(:startup) do
    puts 'Sidekiq is starting...'
    # make_some_singleton
  end
  config.on(:quiet) do
    puts 'Got USR1, stopping further job processing...'
  end
  config.on(:shutdown) do
    puts 'Got TERM, shutting down process...'
    # stop_the_world
  end
end

Итак, мой вопрос следующий: если я уже настроил REDISTOGO_LINK в моем приложении rails, нужно ли мне то же самое для моих переменных конфигурации реакции?

Как лучше всего настроить sidekiq и Redis в Rails API, используя реакцию в качестве интерфейса в heroku? Я не видел ничего, что касалось бы этого на inte rnet.

Буду признателен за вашу помощь! ;)

1 Ответ

1 голос
/ 27 мая 2020

Вам нужно запустить heroku config:set REDIS_PROVIDER=REDISTOGO_URL, чтобы указать Sidekiq использовать REDISTOGO_URL для подключения к Redis.

https://github.com/mperham/sidekiq/wiki/Using-Redis#using -an-env-variable

...