83's

Top > Archives > 2007 > May > 06 > vimからRSpec on Rails

vimからRSpec on Rails

少しずつRSpec on Railsに移行していこうとしてるんだけど、 Test::Unitと違ってrails.vimのサポートがなくて簡単に走らせることができないので moroさんのRSpec用のマクロをベースに ごにょごにょ。

function! Rspec ()
  let rails_spec_pat = '\<spec/\(models\|controllers\|views\|helpers\)/.*_spec\.rb$'
  if expand('%:p') =~ rails_spec_pat
    exe '!rake spec SPEC="'.expand('%:p').'" RSPECOPTS="-fs -c -l '.line('.').'"'
  else
    :!spec -fs -c %
  endif
endfunction

au BufRead,BufNewFile *_spec.rb :command! Rspec :call Rspec()

*_spec.rb開いて:Rspecで実行できる。

違いは

--lineオプションのおかげで、実行したいit(specify)の中にカーソル持ってくれば そこだけ実行してくれる。 itの外だとそこのdescribe(context)を実行……するといいんだけど、 カーソルとdescribe行の間にitがある場合、カーソルに1番近い itのみが実行される。まあこれはRSpecの仕様、ということで。

--exampleオプションを使えたら一番いいけど、vimスクリプト書かないとどうしようもないので ひとまずこれでガマン。

それから、spec/spec.optsからオプション読めたらいいんだけど、これもオレには無理。 とりあえず今はRSPECOPTSに書き込む。

一息ついたらvimスクリプト勉強しようと思う。 rails.vimの人がなんとかしてくれたらそれが一番最高ですが。

まだRSpec全然触れてないんだけど、個人的な感想としては describe/itの2段階で括れることと、それらの引数のところで説明が書けるのが好きだな、 コメントより目立つし。 あとTest::Unitのtest_xxxみたいに妙な英語を書く必要もないし……。

shouldなんとかはどうでもいいというか、むしろ慣れるまでキモいんだけど。 あ、Test::Unitではtest_helper.rbに繰り出せば良かったメソッドって、 RSpecではどこにどう書いたらいいんだろう……。

そういえば知らないうちにcontext/specifyからdescribe/itになったみたいだけど、 日本語の場合はちょっと微妙だな……。itなんて動詞ですらない。

Trackbacks

Trackback Ping URL: http://fg-180.katamayu.net/trackback/429

Comments

takkanm (2007/05/06 15:49:34)

shouldなんて、自然言語っぽくみせるためだけの位置づけじゃないかと、さわったことないやつが言ってみるメソッド。

yazu (2007/05/06 17:12:06)

> takkanm
オレの英語力でもそれくらいわかるわい。
キモいといったのはそういうことじゃない。

takkanm (2007/05/06 18:28:33)

>オレの英語力でもそれくらいわかるわい。
俺の英語力 T前 + 100だから
>キモいといったのはそういうことじゃない
kwsk

http://とかhttps://が入ってるとPOSTできません。ttp://のように適宜変えてください。