# frozen_string_literal: true require 'sidekiq' require 'sidekiq-scheduler' require 'sidekiq/middleware/i18n' redis_host = ENV.fetch('REDIS_HOST', 'localhost') redis_url = "redis://#{redis_host}:6379" Sidekiq.configure_server do |config| config.redis = { url: redis_url } # client_middleware is also configured in configure_server block # because jobs running in the Sidekiq server can themselves push # new jobs to Sidekiq, thus acting as clients # see https://github.com/sidekiq/sidekiq/wiki/Middleware for more details config.client_middleware do |chain| chain.add Sidekiq::Middleware::I18n::Client chain.add SidekiqUniqueJobs::Middleware::Client end config.server_middleware do |chain| chain.add Sidekiq::Middleware::I18n::Server chain.add SidekiqUniqueJobs::Middleware::Server end SidekiqUniqueJobs::Server.configure(config) config.on(:startup) do # load sidekiq-scheduler schedule config schedule_file = 'config/schedule.yml' if File.exist?(schedule_file) rendered_schedule_file = ERB.new(File.read(schedule_file)).result Sidekiq.schedule = YAML.safe_load(rendered_schedule_file) SidekiqScheduler::Scheduler.instance.reload_schedule! end end end Sidekiq.configure_client do |config| config.redis = { url: redis_url } config.client_middleware do |chain| chain.add Sidekiq::Middleware::I18n::Client chain.add SidekiqUniqueJobs::Middleware::Client end end # Quieting logging in the test environment if Rails.env.test? require 'sidekiq/testing' Sidekiq.logger.level = Logger::ERROR end