コマンドラインからすべてのバッジを強制的に付与する方法は?

バッジは1日1回付与されます。
コマンドラインから「今すぐ」付与プロセスをスケジュールまたは強制実行する方法はありますか?

最も簡単な方法は、/sidekiq/scheduler にアクセスし、名前に “grant” という単語が含まれるジョブを探すことです。おそらく Jobs::BadgeGrant が対象ですが、バッジによっては独自のタスクを持つものもあります。

Sidekiq の現在から 24 時間以内のスケジュール済みタスクをすべて確認しましたが、いずれにも grant トークンは含まれていませんでした。

ええと…おかしいですね。こんな行は見えていませんか?

これは開発サーバーですか、それとも本番サーバーですか?

production の forum.kozovod.com にあります。
その通りです。あなたのスクリーンショットにあるようなエントリはありません。

長い間バッジが付与されていないことに気づきました。コンテナを再構築しているので、再起動後にタスクがスケジュールされるか確認します。

また、カスタム SQL バッジの 1 つにエラーがあったことに気づきました。それが他のすべてのバッジの動作を停止させる可能性がありますか?

理論的には、いいえです。

最も可能性が高いのは、docker-manager の更新がうまくいかなかったことで、Sidekiq ジョブの読み込みに失敗したことです。再構築すれば、おそらく正常に動作するはずです。

はい、再構築は正常に完了しました。

ただし、完了から数分経っても、125 以上のスケジュール済みタスクのいずれにも grant トークンが見つかりません。これは、設定に何か問題があることを意味するのでしょうか?

はい、おそらくそうです。/logs にエラーはありますか?異常なプラグインはありますか?

えーと、直近の約20分間で致命的な問題はなさそうです。

バッジの実行やスケジューリングを破綻させるような不審な点は見当たりますか?

目立った問題は見当たりません。コンソールを開いて Jobs::BadgeGrant と入力してみてください。どのような結果になりますか?以下のように表示されるはずです:

[1] pry(main)> Jobs::BadgeGrant
=> Jobs::BadgeGrant

はい、こちらです:

その後、/logs に新しいエラーは表示されません。

また、grant トークンを含む新しいエントリが /sidekiq/scheduled にもありません。

干渉している可能性があるプラグインはありますか?

有効なものは以下です。私は人気があり、サポートされているもののみを使用するようにしています:

          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/discourse/discourse-staff-notes.git
          - git clone https://github.com/joebuhlig/discourse-feature-voting.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-cakeday.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-canned-replies.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-bbcode.git
          - git clone https://github.com/angusmcleod/discourse-locations.git
          - git clone https://github.com/discourse/discourse-adplugin.git
          - git clone https://github.com/angusmcleod/discourse-custom-wizard.git

確認ですが、「Scheduled」か「Scheduler」のどちらをご覧になっていますか?バッジジョブはSchedulerの下にあるはずです。

(余談ですが、この名前付けは本当に混乱しますね!)

ありがとうございます。
スケジューラーの下に、以下のジョブが表示されるようになりました:

  • Jobs::GrantNewUserOfTheMonthBadges
  • Jobs::GrantAnniversaryBadges
  • Jobs::BadgeGrant

すべてのスケジューラーのジョブは「定期的なジョブ」セクションに表示されます。

さて、「トリガー」ボタンをクリックして、何が起きるか確認しても安全でしょうか?

ああ、いいですね。これで解決がぐっと簡単になりました!

はい、トリガーボタンは安全ですよ :slight_smile:

ありがとうございます、実行中です。

前回は1万秒かかったので、明日の朝に再度確認します。

特定のバッジのみを処理する方法はありますか?コマンドラインから可能ですか?

10,000 秒は相当な時間です!メタでは 500 秒で済みます。カスタムバッジのクエリのいずれかが非効率的なのかもしれません(そのため、カスタム SQL 機能はデフォルトで無効化されています)

ありがとうございます。クエリを素早く確認し、一つを少し修正したところ、所要時間が約1000秒に短縮されました。また、SQLの最適化に関する質問を別のトピックにクロスポストしました。

バッジの話に戻りますが、これで正常に動作し、すべてのバッジが付与されました。お手伝いと迅速なご返信に感謝いたします。