rigor-sidekiq
Sidekiqのエンキュー呼び出し ── Worker.perform_async(...)、.perform_inline(...)、.perform_in(t, ...)、.perform_at(t, ...) ── を、発見されたワーカーの#performのアリティ(arity)に対して検証します。設定された検索パスを走査し、include Sidekiq::Job(またはレガシーのSidekiq::Worker)するクラスをマッチさせることでワーカーを発見します。ソースのみを読み、sidekiqのランタイム依存はありません。
これはrigortypeにバンドルされて配布されます。plugins:の下で有効化してください。
plugins: - rigor-sidekiq何をチェックするか
Section titled “何をチェックするか”class WelcomeEmailWorker include Sidekiq::Job def perform(user_id, locale = "en") # arity 1..2 endend
WelcomeEmailWorker.perform_async(123) # info: matches #perform (arity 1..2)WelcomeEmailWorker.perform_in(60, 123, "ja") # info: schedule carved out, 123/"ja" forwardedWelcomeEmailWorker.perform_async # error: expects 1..2 argument(s), got 0WelcomeEmailWorker.perform_in # error: requires a schedule as its first argumentperform_in / perform_atは最初の引数をスケジュール(間隔 / Time)として消費します。残りの引数は#performに対して検証されます。perform_async / perform_inlineはすべての引数を転送します。
| ルール | 重大度 | 発火条件 |
|---|---|---|
plugin.sidekiq.worker-call | info | Worker.perform_*呼び出しが発見されたワーカーの#performアリティにマッチした |
plugin.sidekiq.wrong-arity | error | 転送される引数の個数が#performのアリティの範囲外に収まる(メッセージはperform_in / perform_atのスケジュール切り出しを示します) |
plugin.sidekiq.missing-schedule | error | perform_in() / perform_at()が引数ゼロで呼ばれた(#performが引数を取らない場合でもスケジュールは必須) |
plugin.sidekiq.load-error | warning | ワーカーの発見に失敗した(パース / 読み込みエラー) ── ファイルごとに1回 |
plugins: - gem: rigor-sidekiq config: worker_search_paths: ["app/workers", "app/sidekiq"] # default worker_marker_modules: ["Sidekiq::Job", "Sidekiq::Worker"] # defaultデフォルトのworker_marker_modulesは、モダンなSidekiq(Sidekiq::Job、6.3以降)とレガシーのSidekiq::Workerの両方をカバーします。
- 直接の
includeのみ。Sidekiq::Jobを再includeするカスタムconcernをミックスインするワーカーは発見されません ── 中間のモジュールをworker_marker_modulesに追加してください。 - 構文的なアリティのみ。
#performのアリティはパラメータリストから読まれます。define_methodで構築されたメソッドは対象外です。 - キーワード引数の検証はなし。 Sidekiqは引数をJSONにシリアライズするため、位置引数が標準的なシェイプ(shape)です。
- スケジュールの型は検証されません。
perform_in/perform_atの最初のスロットは、その型に関係なくスケジュールとして消費されます。 - チェーンされた
set(...)(Worker.set(queue: "low").perform_async(...))は通常の呼び出しとして検証されます。set自身のオプションはチェックされません。
プラグイン内部
Section titled “プラグイン内部”ワーカーの発見器 / インデックスと、このプラグインが行使する契約(contract)サーフェス(surface)はプラグインのREADMEにあります。プラグインの書き方はexamples/とrigor-plugin-authorスキルを参照してください。
© 2026 TypedDuck. Licensed under CC BY-SA 4.0.