継続的ブログ

主にweb系の技術について書いています

docker環境でvimからrspec実行

qiita.com

少し前にjokerさんの ↑ の記事を参考にして、docker環境でvimからrspec実行できるようにして、最高に快適になりました。
ありがとうございます。

記事ではdirenv使って環境変数でコンテナ名を指定してフィルターしているみたいですが、自分はリポジトリ増えたり、docker環境とそうでない環境が混在してきたらでいいかなと思ったのでとりあえず雑に設定...

nnoremap <Leader>tn :TestNearest<CR>
nnoremap <Leader>tf :TestFile<CR>

let test#strategy = 'neoterm'
let test#ruby#rspec#executable = 'rspec'
function! DockerTransformer(cmd) abort
  let container_id = system("docker ps | grep app | grep rails | awk '{print $1}'")
  return 'docker exec -t ' . container_id . ' bundle exec ' . a:cmd
endfunction
let g:test#custom_transformations = {'docker': function('DockerTransformer')}
let g:test#transformation = 'docker'
let container_id = system("docker ps | grep app | grep rails | awk '{print $1}'")

これでrails起動しているコンテナIDを取得するようにしました。(grepの条件はターゲットにしているコンテナを一意に特定できる条件)

ご参考まで。

github.com

github.com