PresenterRuby2.1のRefinementsを使って、RailsのPresenter層ライブラリを作れるんじゃないかと週末にがんばってみたところ、いい感じに実装できた。現状はサンプルのRailsアプリケーションで動くようになったところ。https://github.com/kmdsbng/refinements_rails_presenter_test動きを一言で説明すると、特定のViewのファイルでのみ、refineで定義したメソッドが生える。あるViewでのみ、modelにメソッドを生やす、ということができる。これはRuby2.1のRefinementsの機能を使って実現してるだけなんだけど、Viewのなかでusingを呼び出すだけでは動いてくれなかったので、動くようにActionpackに手を加えてる。refine定義するモジュールのサンプル。sample普通にrefineを使って、Postモデルにメソッドを定義してる。これはAutoLoadされるディレクトリならどこに置いてもいい。sampleこれがViewの定義。書いてる行で、refineを定義しているmoduleを指定してる。これで、このViewではPost#body_lengthが使えるようになる。現状トップレベルからしか呼び出せないという制限がある。Viewテンプレートをevalしてるところで、usingを加えてevalするようにモンキーパッチを当てたところ、うまくいった。このやり方だとmodelインスタンスすべてに処理しないといけないのでどうしても手間がかかってしまったが、Refinementsが使えるならもっとスマートに同様の機能が実現できる。有望なアプローチだと思う。#4におじゃましてきました。月別アーカイブ参加グループWindows開発者はてなブログをはじめよう!kmdsbngさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。