Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

RSpec3.0.0をvim-quickrunとvimprocで行指定実行

$
0
0

RSpec3.0.0になってrspecコマンドの-lオプションがなくなりました。
vim-quickrunとvimprocでrspecコマンドを実行しているのですが、オプションがなくなったためRSpecファイルを編集中にカーソルがある行を指定して実行するときにエラーが出るようになりました。

今までの設定は以下のようにしていました。(quickrunの設定部分を抜粋)

.vimrc
"===========================================" quickrun settings"===========================================letg:quickrun_config = {}
letg:quickrun_config._ = {'runner' : 'vimproc',"runner/vimproc/updatetime" : 10}
letg:quickrun_config['ruby.rspec'] = {'command': 'rspec','cmdopt': '-cfd'}

augroup QRunRSpec
  autocmd!autocmdBufWinEnter,BufNewFile *_spec.rb setfiletype=ruby.rspec
augroup END

nnoremap [quickrun] <Nop>
nmap <Space>k [quickrun]
nnoremap<silent> [quickrun]r :call QRunRspecCurrentLine()<CR>fun! QRunRspecCurrentLine()let line = line(".")
  exe ":QuickRun -cmdopt '-cfd -l " . line . "'"endfun

QRunRspecCurrentLine関数でrspecコマンドを行指定で実行しているのですが、上記の設定だとRSpec3.0.0にすると行指定実行したときに以下のようなエラーが出力されます。

invalid option: -l

Please use --help for a listing of valid options

rspecコマンドのヘルプを見ると

  **** Filtering/tags ****

    In addition to the following options for selecting specific files, groups,
    or examples, you can select a single example by appending the line number to
    the filename:

      rspec path/to/a_spec.rb:37

とあるので、ファイル名の後にコロンと行番号をつけてやればよさそうです。

なので、以下のように設定を変更しました。

.vimrc
"================================================================================
" quickrun settings
"================================================================================
let g:quickrun_config = {}
let g:quickrun_config._ = {'runner' : 'vimproc', "runner/vimproc/updatetime" : 10}
let g:quickrun_config['ruby.rspec'] = {'command': 'rspec', 'cmdopt': '-cfd'}

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

nnoremap [quickrun] <Nop>
nmap <Space>k [quickrun]
nnoremap <silent> [quickrun]r :call QRunRspecCurrentLine()<CR>
fun! QRunRspecCurrentLine()
  let line = line(".")
- exe ":QuickRun -cmdopt '-cfd -l " . line . "'"+ exe ":QuickRun -exec '%c %s%o' -cmdopt ':" . line . " -cfd'"
endfun

具体的にはコマンド実行の書式を変更しました。

bundlerを使用している場合は以下のように設定してください。

.vimrc
"===========================
 " quickrun settings
 "===========================
  let g:quickrun_config = {}
  let g:quickrun_config._ = {'runner' : 'vimproc', "runner/vimproc/updatetime" : 10}
- let g:quickrun_config['ruby.rspec'] = {'command': 'rspec', 'cmdopt': '-cfd'}+ let g:quickrun_config['ruby.rspec'] = {'command': 'rspec', 'exec': 'bundle exec %c', 'cmdopt': '-cfd'}

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

  nnoremap [quickrun] <Nop>
  nmap <Space>k [quickrun]
  nnoremap <silent> [quickrun]r :call QRunRspecCurrentLine()<CR>
  fun! QRunRspecCurrentLine()
    let line = line(".")
- exe ":QuickRun -cmdopt '-cfd -l " . line . "'"+ exe ":QuickRun -exec 'bundle exec %c %s%o' -cmdopt ':" . line . " -cfd'"
endfun

詳しくはヘルプをご覧ください。
:h quickrun-option-exec

これでRSpec3でもファイルを編集中に行指定のテスト実行ができるようになります。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>