Realizando ediciones en la configuración de inicialización

Como se discutió, estoy intentando aprovechar esto, pero he encontrado un obstáculo, porque estoy personalizando:

/config/initializers/100-sidekiq.rb

Aquí está mi código alterado, estoy:

  • Dando a cada trabajo un atributo de recuento de reintentos accesible que estoy usando en un plugin para cambiar la lógica del flujo de trabajo dependiendo de la cantidad de veces que se ha reintentado un trabajo.

En el archivo que estoy modificando, lo estoy modificando para:

  • Crear una clase Middleware personalizada para recuperar el valor.
  • Añadir la clase a la cadena para que se incluya.
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 # <-- NUEVO
   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 # <-- NUEVO
    chain.add Sidekiq::DiscourseEvent
  end

Actualmente lo estoy logrando con un script de edición de archivos en app.yml usando sed.

Esto rompe la higiene del repositorio, por lo que no puedo usar los activos compilados incluidos.

¿Alguna sugerencia sobre cómo hacer estas modificaciones desde un plugin?

1 me gusta

¿Importa la posición específica en la pila? Probé esto en un plugin.rb y pareció agregar el middleware :crossed_fingers:

class BreakEverythingMiddleware
  def call(worker, job, queue)
    puts "¡El middleware funcionó!"
    raise "¡EL MIDDLEWARE FUNCIONÓ!"
  end
end

Sidekiq.default_configuration.server_middleware { |chain| chain.add BreakEverythingMiddleware }
1 me gusta

¡No debería!

¡Gran sugerencia, voy a probar eso!

2 Me gusta