Ruby on Railsを使ったOSSを読む(thredded)
Ruby on Railsを使ったOSSをコードリーディングする。
今回は、機能豊富かつシンプルなフォーラムシステムであるThreddedを題材とした。
全体のアーキテクチャ
清く正しいRailsアプリケーションといったイメージ。
モダンなJSフレームワークは使っておらずwebpackerも不要。
LPとシステムをnamespace thredded で区切っている。
権限の判定処理にpunditを利用している。コントローラから権限の処理を外出しできるので良さそう。
モデル
MessageboardGroup → Messageboard → Topicの階層構造がメインである。
Messsageboardにはfriendly_idを当てていて、URLをカスタマイズしている。
Messageboardが絡むリレーションが比較的多い。
トピックの未読状態はUserTopicReadStateというUserとTopicの中間テーブルにより管理している。
コントローラ
全体的に薄い。
前述の通りpunditを使うことで、権限の処理を外出ししている。
app/view_models
ディレクトリにVIEW-MODELを定義している。
その他
app/commands
ディレクトリにJobで呼び出す処理が記載されている。
app/notifiers
ディレクトリに通知処理がまとめられている。
感想
権限チェックやメール通知の実装方法は参考にできると感じた。
日本語対応していないので、PRを出しても良いかもしれない。