Module: GovukSidekiq::SidekiqInitializer

Defined in:
lib/govuk_sidekiq/sidekiq_initializer.rb

Class Method Summary collapse

Class Method Details

.setup_sidekiq(govuk_app_name, redis_config = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/govuk_sidekiq/sidekiq_initializer.rb', line 7

def self.setup_sidekiq(govuk_app_name, redis_config = {})
  redis_config = redis_config.merge(
    namespace: govuk_app_name,
    reconnect_attempts: 1,
  )

  Sidekiq.configure_server do |config|
    # $real_stdout is defined by govuk_app_config and is used to point to
    # STDOUT as that redirects $stdout to actually be $stderr.
    # When govuk_app_config does this we need to use $real_stdout to output logs to STDOUT.
    # https://github.com/alphagov/govuk_app_config/blob/08fd9cf6a848615261b3cef021e34490ed72ee55/lib/govuk_app_config/govuk_logging.rb#L18-L24

    # rubocop:disable Style/GlobalVars
    config.logger = Sidekiq::Logger.new($real_stdout) if defined?($real_stdout)
    # rubocop:enable Style/GlobalVars
    config.log_formatter = GovukSidekiq::GovukJsonFormatter.new if ENV["GOVUK_SIDEKIQ_JSON_LOGGING"]

    config.redis = redis_config

    config.server_middleware do |chain|
      chain.add GovukSidekiq::APIHeaders::ServerMiddleware
    end
  end

  Sidekiq.configure_client do |config|
    config.redis = redis_config

    config.client_middleware do |chain|
      chain.add GovukSidekiq::APIHeaders::ClientMiddleware
    end
  end
end