.logbook

学んだことを書き綴る、言わば航海日誌です。

Ruby on Railsを使ったOSSを読む(thredded)

f:id:ylgbk:20190504231625p:plain

Ruby on Railsを使ったOSSをコードリーディングする。

今回は、機能豊富かつシンプルなフォーラムシステムであるThreddedを題材とした。

github.com

全体のアーキテクチャ

清く正しい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を出しても良いかもしれない。