Home > Vim Hacks > Hack #172: RSpecをquickrunする (1/2):

Hack #172: RSpecをquickrunする (1/2):

問題

Rubyでプログラムを書くときは必ずRSpecでその仕様を記述することが推奨されています。VimからRSpecを呼び出す方法は多々あり、一般に使われている方法は以下のいずれかでしょう。

  • Vim Rspecを使う
  • Specky!を使う
  • :!rspec %する
  • Rakefileにテストスイートを記述し、:!rakeあるいは:makerakeコマンドを走らせる
  • :shellまたはvimshellからrspecコマンドを直接走らせる
  • Vimの外から自動でRSpecを走らせる (一定時間間隔なり、ファイルが変更された時点なり)

しかしながら、いずれの方法も問題を抱えています。

  • Vim Rspecを使う
    • 依存ライブラリが多い。特にHpricotなど、今では誰も使用していないライブラリに依存してしまっている
    • 実行結果を見るときにVimで他の処理ができない
    • Rspecなど存在しない。RSpecが正しい
  • Specky!を使う
    • RSpecしたいだけの者には無駄な機能が多すぎる。特にsnippet
    • RSpecの結果の失敗をquickfixとして使っているという設計上のミス (*1)
  • :!rspec %する
    • 実行結果を見るときにVimで他の処理ができない
  • Rakefileにテストスイートを記述し、:!rakeあるいは:makerakeコマンドを走らせる
    • 実行結果を見るときにVimで他の処理ができない
  • :shellまたはvimshellからrspecコマンドを直接走らせる
    • :shellの場合、実行結果を見るときにVimで他の処理ができない
    • 汎用的すぎる
    • :shellに入る/抜ける処理が必要
  • Vimの外から自動でRSpecを走らせる (一定時間間隔なり、ファイルが変更された時点なり)
    • 実行結果をVimから閲覧するのが容易でない

(*1): RSpecにおけるFailureと、一般的なプログラミングにおけるコンパイルエラーは全く別もの。コンパイルエラーは望まない結果だが、RSpecではまずFailureが出力されるよう開発するもので、例外的なものではない。異なる概念を同一視している。(←あくまで著者の個人的意見です)

解決法

常日頃使っている汎用プラグインquickrunを使います。~/.vimrcに以下の設定を記述します。

let g:quickrun_config['ruby.rspec'] = {'command': 'spec'}

image

ただし、_spec.rbなファイルをruby.rspecという複合ファイルタイプにするために以下の設定も~/.vimrcに記述します。

augroup UjihisaRSpec
  autocmd!
  autocmd BufWinEnter,BufNewFile *_spec.rb set filetype=ruby.rspec
augroup END

また、他のquickrunの設定をお持ちでない場合、以下の行を先ほどの行よりも手前に記述しておきます。

let g:quickrun_config = {}

補足

quickrunとvimshellを組み合わせると、環境変数$PATHを容易に変更できるため、どのspecコマンドを用いるか容易に変更することができます。 また一般にspecコマンドの実行には時間がかかりますが、quickrunは非同期で実行できるため、気になりません。

参考

Hack #176: RSpecをquickrunする (2/2)

ujihisa
このエントリーをはてなブックマークに追加
はてなブックマーク - Hack #172: RSpecをquickrunする (1/2):
Share on Facebook
Post to Google Buzz
Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

Comments:2

kakkyz 10-10-26 (火) 16:53

自明かもしれませんが、vimrcに let g:quickrun_config['ruby.rspec'] = {‘command’: ‘spec’} の行を追加する前に let g:quickrun_config = {} の行を追加してからでないとエラーが出てしまいました(windows版)。

ujihisa 10-10-27 (水) 6:49

ありがとうございます! いま、こっそり加筆しておきました。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://vim-users.jp/2010/09/hack172/trackback/
Listed below are links to weblogs that reference
Hack #172: RSpecをquickrunする (1/2): from Vim-users.jp

Home > Vim Hacks > Hack #172: RSpecをquickrunする (1/2):

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top