ask.discourse.org は、レールスクリプトとして良い出発点を提供します。
MAX_MESSAGES = 1000 # テスト用のオプションの制限
SECONDS_BETWEEN_MESSAGES = 3 # 3秒間隔
Rails.logger.info "一括メッセージ スクリプトを開始します..."
# メッセージの内容を定義します
message_title = "コミュニティへようこそ"
message_body = "こんにちは! ここへようこそ。ご不明な点がございましたらお知らせください!"
# 最後に見た順にユーザーを取得します
users = User.where(active: true)
.where.not(staged: true) # ステージングされたユーザーを除外します
.order(last_seen_at: :desc)
.limit(MAX_MESSAGES)
Rails.logger.info "#{users.count} 人のアクティブなユーザーにメッセージを送信します。"
users.each_with_index do |user, index|
begin
Rails.logger.info "#{user.username} にメッセージをキューに入れています (#{index + 1}/#{users.count})..."
PostCreator.create!(
Discourse.system_user,
title: message_title,
raw: message_body,
archetype: Archetype.private_message,
target_usernames: user.username,
skip_validations: true
)
Rails.logger.info "#{user.username} へのメッセージが正常にキューに入りました。"
# 次のユーザーを処理する前に指定された間隔を待ちます
sleep(SECONDS_BETWEEN_MESSAGES)
rescue => e
Rails.logger.error "#{user.username} へのメッセージの送信に失敗しました: #{e.message}"
end
end
Rails.logger.info "一括メッセージ スクリプトが完了しました!"
何も変更せずに、ユーザー system がテストインスタンスのすべてのユーザーに MP を送信しました。
ユーザーは何人いますか?

