ボクココ

個人開発に関するテックブログ

ブラックリストワードをフィルタリングする Obscenity

今日は便利なGemを紹介。

掲示板システムをアプリとかで運用していると、NGワード連発な方々がどうしても出てきてしまう。そのため彼らの投稿は拒否したり特殊文字で置き換えたりする必要がある。

そんな時に便利な Gem が GitHub - tjackiw/obscenity: Obscenity is a profanity filter gem for Ruby/Rubinius, Rails (through ActiveModel), and Rack middleware.だ。

Gemfile に obscenity を追加し、bundle install後、以下を追加。

$ cat config/initializers/obscenity.rb

Obscenity.configure do |config|
  config.blacklist   = "config/blacklist.yml"
  config.replacement = :stars
end

ブラックリストを記載したymlファイルを置けば完了だ。

そしたら以下のようにチェックできる基本メソッドがある。

Obscenity.profane?("simple text")
=> false

Obscenity.profane?("text with shit")
=> true

バリデータも ActiveRecord, Mongoid それぞれサポートしている。

CGMを運用しているRailsアプリなら是非導入して安全なサイト運営を心がけたいところだ。ちなみに自分のブラックリスト一覧を置いてみてるので、参考にしていただきたい。

black lists in bss · GitHub

追記

Obscenity のデフォルトのままだと、スペースに囲まれた単語のblacklistのみがになるため、日本語のようにスペース区切りが無い場合はに変換されない問題がある。そこはソースのbase.rb にある \b を消去しなければならない。

最近の興味

ところで、WordPress のホスティングは割と面倒だけど、最近はクラウドで簡単にやってくれるようなサービスが出てきているみたい。設置ってだけで何万とか取ってる会社あるし、こういうので自分でさくっと立てられるようになれれば節約になるんじゃないかな。