Änderungen an der Initialisierungskonfiguration vornehmen

Wie besprochen, versuche ich, dies zu nutzen, bin aber auf ein Problem gestoßen, da ich Folgendes anpasse:

/config/initializers/100-sidekiq.rb

Hier ist mein geänderter Code. Ich:

  • Gebe jedem Job ein zugängliches Wiederholungszählerattribut, das ich in einem Plugin verwende, um die Workflow-Logik zu ändern, abhängig davon, wie oft ein Job wiederholt wurde.

In der Datei, die ich ändere, ändere ich sie zu:

  • Erstellen einer benutzerdefinierten Middleware-Klasse, um den Wert abzurufen.
  • Hinzufügen der Klasse zur Kette, damit sie enthalten ist.
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 # <-- NEU
   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 # <-- NEU
    chain.add Sidekiq::DiscourseEvent
  end

Derzeit erreiche ich dies mit einem Skript zur Dateibearbeitung in app.yml unter Verwendung von sed.

Dies beeinträchtigt die Integrität des Repos, sodass ich die gebündelten kompilierten Assets nicht verwenden kann.

Irgendwelche Vorschläge, wie diese Änderungen von einem Plugin aus vorgenommen werden können?

1 „Gefällt mir“

Spielt die spezifische Position im Stack eine Rolle? Ich habe dies in einer plugin.rb versucht und es schien, die Middleware hinzuzufügen :crossed_fingers:

class BreakEverythingMiddleware
  def call(worker, job, queue)
    puts "Die Middleware hat funktioniert!"
    raise "DIE MIDDLEWARE HAT FUNKTIONIERT"
  end
end

Sidekiq.default_configuration.server_middleware { |chain| chain.add BreakEverythingMiddleware }
1 „Gefällt mir“

Sollte man nicht!

Tolle Anregung, das werde ich ausprobieren!

2 „Gefällt mir“