@Canapin メールに関連する設定であるというドキュメントも見ていません…どこにあるかを知っておくのは良いことです @Heliosurge 指摘してくれてありがとう。
またダイジェストが作成されない日です。この24時間で何かをトリガーするために新しいトピックを投稿しましたが、何も起こりませんでした…
他に何かアイデアはありますか?どこかにログを見落としていますか?何か失敗していて、確認して修正できるものはありますか?
@Canapin メールに関連する設定であるというドキュメントも見ていません…どこにあるかを知っておくのは良いことです @Heliosurge 指摘してくれてありがとう。
またダイジェストが作成されない日です。この24時間で何かをトリガーするために新しいトピックを投稿しましたが、何も起こりませんでした…
他に何かアイデアはありますか?どこかにログを見落としていますか?何か失敗していて、確認して修正できるものはありますか?
これを考えていると、問題はシステム内のユーザー数に関連していると仮定しています。奇妙なのは、Discourse で起動して以来、これが 10 以上変化していないことです。
おおよそ以下のようになっています。
システムがこの検索を実行する際に、何らかの奇妙なタイムアウトが発生しているのでしょうか?失敗した場合、どこでその出力を見ることができますか?
繰り返しますが、1、2 週間前には少なくとも限定的にダイジェストが送信されていたので、これが問題であるというのは奇妙に思えます。
それか、ダイジェストが空になる別の要因があるのかもしれません。そのため、ユーザーに送信されません。
ダイジェストがどのように作成されるのか分かりません。ユーザーが無視しているカテゴリや、そのようなものが考慮されるのかどうか分かりません。
レールコンソールから手動で送信した場合、ユーザーはダイジェストを受信しませんか?
user = User.find_by(username: 'user-name')
Jobs.enqueue(:user_email, type: :digest, user_id: user.id)
これを実行してから数秒後に、Sidekiqの処理済みジョブが1つ増加するはずですが、フォーラムが大きい場合、いつでも多くのSidekiqジョブがある可能性があるため、増加したかどうかを確認するのは難しいかもしれません。
リアルタイムで確認するには、ライブ投票ボタンを使用できます。
私のテストでは、ユーザーにダイジェストを送信するためにレールスクリプトを実行しましたが、ダイジェストが空の場合:
Sidekiqの処理済みジョブの数は1つ増加しますが、メールは送信されず、/admin/email/sent に新しいエントリはありません。
処理されたSidekiqジョブをログに記録して、何か手がかりがないか確認できるかもしれません。少し検索しましたが、デフォルトでどのジョブが処理されたかをログに記録しているかどうかわかりません。
ユーザーがダイジェストを受信しないことには、論理的で良い説明があると思います。ジョブは処理されているかもしれませんが、ダイジェストは空である可能性があり、それが痕跡がない理由を説明しています。
関係するすべてのユーザーの設定、通知レベル、追跡中のカテゴリなどを再度徹底的に確認することをお勧めします。
ダイジェスト送信の仕組みにデバッグ出力を追加するのは比較的容易です。
テスト用のステージングサイトはありますか?そこで、本番環境を危険に冒さずにテストできます。
そこでは、例えばクエリのタイムアウトが発生しているかどうかをテストすることができます。素朴に考えると、タイムアウトはログで確認できるはずです。
さらに、ターゲットとなる人々を構築するクエリに統計出力を追加することも可能です。
これらすべてはサンドボックス環境では難しくありませんが、運用環境では危険になる可能性があります。
続きはこちらをご覧ください。