初期設定の構成の編集

議論したように、これを活用しようとしていますが、カスタマイズしているため行き詰まっています。

/config/initializers/100-sidekiq.rb

変更したコードは次のとおりです。

  • 各ジョブにアクセス可能なリトライカウント属性を付与し、プラグインで使用して、ジョブがリトライされた回数に応じてワークフローロジックを変更します。

ファイル内で次のように変更します。

  • 値を取得するためのカスタムミドルウェアクラスを作成します。
  • クラスをチェーンに追加して、含まれるようにします。
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 # <-- NEW
   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 # <-- NEW
    chain.add Sidekiq::DiscourseEvent
  end

現在、app.yml のファイル編集スクリプトで sed を使用してこれを実現しています。

これにより、リポジトリの整合性が損なわれるため、バンドルされたコンパイル済みアセットを使用できません。

プラグインからこれらの変更を行う方法についての提案はありますか?

「いいね!」 1

スタック内の特定の位置は重要ですか?プラグイン.rbでこれを試したところ、ミドルウェアが追加されたようです:crossed_fingers:

class BreakEverythingMiddleware
  def call(worker, job, queue)
    puts "ミドルウェアが機能しました!"
    raise "ミドルウェアが機能しました"
  end
end

Sidekiq.default_configuration.server_middleware { |chain| chain.add BreakEverythingMiddleware }
「いいね!」 1

するべきじゃない!

素晴らしい提案です。試してみます!

「いいね!」 2