Modification de la configuration d'initialisation

Comme discuté, j’essaie de profiter de cela, mais j’ai rencontré un problème, car je personnalise :

/config/initializers/100-sidekiq.rb

Voici mon code modifié, je suis :

  • Donner à chaque tâche un attribut de nombre de nouvelles tentatives accessible que j’utilise dans un plugin pour modifier la logique du flux de travail en fonction du nombre de fois qu’une tâche a été retentée.

Dans le fichier que je modifie, je le modifie pour

  • Créer une classe Middleware personnalisée pour récupérer la valeur
  • Ajouter la classe à la chaîne afin qu’elle soit incluse
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 # <-- NOUVEAU
   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 # <-- NOUVEAU
    chain.add Sidekiq::DiscourseEvent
  end

Actuellement, j’y parviens avec un script de modification de fichier dans app.yml utilisant sed.

Cela brise l’intégrité du dépôt, je ne peux donc pas utiliser les actifs compilés groupés.

Des suggestions sur la façon de apporter ces modifications à partir d’un plugin ?

1 « J'aime »

La position spécifique dans la pile a-t-elle de l’importance ? J’ai essayé ceci dans un plugin.rb et il a semblé ajouter le middleware : dedos_croisés :

class BreakEverythingMiddleware
  def call(worker, job, queue)
    puts "Le middleware a fonctionné !"
    raise "LE MIDDLEWARE A FONCTIONNÉ"
  end
end

Sidekiq.default_configuration.server_middleware { |chain| chain.add BreakEverythingMiddleware }
1 « J'aime »

Ne devrait pas !

Excellente suggestion, je vais essayer ça !

2 « J'aime »