Внесение изменений в конфигурацию инициализации sidekiq

Как мы обсуждали, я пытаюсь воспользоваться этой возможностью, но столкнулся с проблемой, так как кастомизирую:

/config/initializers/100-sidekiq.rb

Вот мой измененный код. Я:

  • Добавляю каждому заданию доступный атрибут количества попыток перезапуска, который использую в плагине для изменения логики рабочего процесса в зависимости от того, сколько раз задание перезапускалось

В этом файле я вношу следующие изменения:

  • Создаю собственный класс Middleware для получения значения
  • Добавляю этот класс в цепочку, чтобы он был включен
require "sidekiq/pausable"
require "sidekiq/discourse_event"
require "sidekiq_logster_reporter"
require "sidekiq_long_running_job_logger"
require "mini_scheduler_long_running_job_logger"

 module Sidekiq::Middleware::Server #<-- НОВОЕ
   class SetRetryCountMiddleware
     def call(worker, job, queue)
       worker.retry_count = job["retry_count"] if worker.respond_to?(:retry_count=)
       yield
     end
   end
 end


Sidekiq.configure_client { |config| config.redis = Discourse.sidekiq_redis_config }

Sidekiq.configure_server do |config|
  config.redis = Discourse.sidekiq_redis_config
  config[:skip_default_job_logging] = false

  config.server_middleware do |chain|
    chain.add Sidekiq::Pausable
    chain.add Sidekiq::Middleware::Server::SetRetryCountMiddleware #<-- НОВОЕ
    chain.add Sidekiq::DiscourseEvent
  end

В данный момент я реализую это с помощью скрипта редактирования файлов в app.yml, используя sed.

Это нарушает чистоту репозитория, поэтому я не могу использовать bundled скомпилированные ассеты.

Есть ли какие-либо предложения, как внести эти изменения из плагина?

Важно ли конкретное положение в стеке? Я попробовал это в plugin.rb, и, похоже, это добавило middleware :crossed_fingers:

class BreakEverythingMiddleware
  def call(worker, job, queue)
    puts "Мiddleware сработал!"
    raise "MIDDLEWARE СРАБОТАЛ"
  end
end

Sidekiq.default_configuration.server_middleware { |chain| chain.add BreakEverythingMiddleware }

Так делать не стоит!

Отличное предложение, я попробую это! Спасибо!