RailsにWisper入れてみる

Wisperとは

github.com

Ruby on Railsで Pub-Subパターンを使うためのライブラリ。ビジネスロジックを分離して Hexagonal Architecture を実現するためや、ActiveRecord のCallbackの代わりに使ったりする。

サンプル

使い方はGitHubに載ってるので十分だったので省略。 気が向いたら追記するかも。

感想

巷で話題になるだけあって、コードがスッキリ書ける感じする。 .on { block } の記法だとJavaScriptのPromiseとにた感じがするのも良かった。 DDDとかCQSと組合わせるときに真価を発揮しそうだけど、部分的に使うだけで十分コードが整理される感じがして良かった。

背景

取り止めがなくなったので最後に…

仕事のRailsのコードベースが大きくなってるので、ツラみを解決したくて入れてみた。 まず1つ目は、Model間にまたがった処理をしたいとき。どこにコードを書こうか迷うし、後から読み返すときにどこで変更があるのかわかりにくい。大体は関連の強い気がするModelに入り口となるメソッド作ってる。 そして2つ目に、ログイン情報やリクエストの内容を処理に使うような場合。関心の分離的にはControllerに書くべきなのか?Controllerにコードたくさん書くのってイケてないのでは?とか思いつつ書いていた。 こういう場合、サービスクラスを導入するというのもよくあるけれど、最近はCommandという単位にするのが流行ってる雰囲気を感じる。

qiita.com

リファクタしたい気持ちをもちつつ、Wisper使ってみた経験が欲しかったので、とりあえずライトにできる範囲で試してみた。