監視ワードの正規表現 設定を有効にすると、無効な正規表現が特定の監視ワードカテゴリ全体を機能不全に陥らせます。
再現手順
- 「監視ワードの正規表現」を有効にします。
- 「承認が必要」に監視ワードパターンを追加します(例:
same issue)。 - 無効な監視ワードパターンを追加します(例:
*ban*。これは正規表現を有効にする前にワイルドカードを含む監視ワードを持っていた場合に該当します)。 - 「same issue」を含む投稿が承認キューをスキップし、「テスト」フォームでも無視されることに注意してください。
- 無効な監視ワードを削除します。
- 「same issue」が正しく一致するようになったことを確認してください。
再現手順(より深刻なケース):
- 「監視ワードの正規表現」と「タグ」を有効にします。
- 「タグ」に無効な監視ワードパターンを追加します(例:
*tebex.io*→paid)。 - 新しいトピックを投稿しようとします。これにより「Error 500」が返され、
/logsに以下の結果が表示されます:
RegexpError (target of repeat operator is not specified: /*tebex.io*/)
app/services/word_watcher.rb:116:in `initialize'
app/services/word_watcher.rb:116:in `new'
app/services/word_watcher.rb:116:in `matches?'
lib/topic_creator.rb:184:in `block in setup_tags'
lib/topic_creator.rb:183:in `each'
lib/topic_creator.rb:183:in `setup_tags'
lib/topic_creator.rb:46:in `create'
lib/post_creator.rb:501:in `create_topic'
補足
正規表現が無効な場合でも、例えば / ブロックで囲まれていれば、ワイルドカードと同様に有効な正規表現の入力を許可するとよいと思います。特に、既存の監視ワードにワイルドカードが含まれている場合、この切り替えが深刻な問題を引き起こす可能性があるためです。