quickrunはデフォルトでいろんなファイルを実行してくれますが、rspecまではカバーしてくれていないので、
hogehoge_spec.rb等のファイルを開いて、quickrunすると普通にrubyコマンドで実行されてしまいます。
ソースコード自体でrspecライブラリをrequireしていれば、それでも動作するはずですが、
普通はrspecコマンドから実行することを想定しているので、
余計なrequire記述はしていないと思います。
なので、vimrcにちょこっと設定を追加して、
let g:quickrun_config = {} let g:quickrun_config._ = {'runner' : 'vimproc'} let g:quickrun_config['rspec/bundle'] = { \ 'type': 'rspec/bundle', \ 'command': 'rspec', \ 'exec': 'bundle exec %c %s' \} let g:quickrun_config['rspec/normal'] = { \ 'type': 'rspec/normal', \ 'command': 'rspec', \ 'exec': '%c %s' \} function! RSpecQuickrun() let b:quickrun_config = {'type' : 'rspec/bundle'} endfunction autocmd BufReadPost *_spec.rb call RSpecQuickrun()
簡単な説明
- g:quickrun_configにrspecのコマンドを実行するタイプを追加します。
- autocmdで*_spec.rbを読みこんだ時は、b:quickrun_configを設定して、そのバッファでquickrunを実行する際のtypeを上書きします。
- runnerにvimprocを利用することで、rspecの起動待ち、実行中でもvimがロックされずに済む。
RailsやSinatraで使うことを想定しているので、bundlerベースの起動をデフォルトにしていますが、
bundlerを使ってない場合は、b:quickrun_configを設定しなおすか、
:QuickRun rspec/normalといった形で呼出タイプを指定するといいかと思います。
読み込んだ時のカレントディレクトリにGemfileが存在するかどうかで、自動で分けるとかも可能だと思いますが、
めんどいのでやってません。
後は、出力を上手くハイライトしてRed-Greenが分かるようにしたいけど、かなり面倒そうな気が・・・。
書いてから思ったけど、これRuby Advent Calendarのネタになったんじゃ・・・。
自分から、ネタ一個潰して自爆してないか。(汗