rspecを実行するVimプラグイン【run-rspec.vim】を作った

Vimでrspecを実行するプラグインはいくつか存在しているのですが、色々試してみたのですが、どうもしっくりくるものがありませんでした。一番良さげだったのはskwp/vim-rspecだったのですが、すでにメンテナンスされていないようで、rspec3では動きません。PRを送っても放置状態だったので、しびれを切らして自分で作ってしまいました。
Vimでrspecを実行するプラグインはいくつか存在しているのですが、色々試してみたのですが、どうもしっくりくるものがありませんでした。一番良さげだったのはskwp/vim-rspecだったのですが、すでにメンテナンスされていないようで、rspec3では動きません。PRを送っても放置状態だったので、しびれを切らして自分で作ってしまいました。
active_decoratorにてデコレートされたモデルをrspecでテストする際、デコレータ内でヘルパーメソッド(link_to
とかurl_for
とか)を使用しているとNoMethodErrorが発生する。これはActiveDecorator::ViewContext
にActionView::Context
が積まれてないことが原因みたい。rspec専用のgem(mizoR/active_decorator-rspec)もあるみたいだけど、まだrails 5には対応できてない((active_decorator-rspec 0.0.9で対応したようです。))(もしくはrspec 3.5?)ようなので、対応策をメモっておく。
通常のrspecの出力は 「.(成功)」, 「F(失敗)」, 「*(ペンディング)」となっている。この味気ない出力を、殺伐とした開発現場に咲くひまわりとなるべく、ジョジョ風にアレンジするというプチ・ハックを実施してみようと思う。
Railsを使い始めてX年経ったこともあり、自分なりの開発パターンが形成されていることに気づきました。今日はそれを恥ずかしげもなく晒してみようかと思います。
Ruby on Railsにてモデルの機能を拡張する方法は、モジュールをインクルードするのが一般的です。インクルードするモジュールがActiveRecordに依存しない内容であれば、単体テストを書くことは難しくありません。しかし、ActiveRecordに依存している場合はちょっと面倒です。なぜなら、インクルードする側のモデルに対応するテーブルが必要になるからです。今回は、そんな血ヘドを吐くような困難に打ち勝つ方法をご紹介します。