Serverspec を書きやすくする Vim プラグインをつくった
経緯
会社で Serverspec 作成 GUI アプリケーションを作る
Serverspec 作成補助アプリケーションをリリースしました | サバカン屋テックブログ
↓
@p_ck_ ごくまれに書くー
記事を読んだ感想だと、全く新規に書きたいって時は便利かも。ただ普通は社のテンプレートがある(テスト項目を属人化・抜け漏れさせない)のと、GUIつかうのはちょっとめんどいって印象を受けた。使ってみた感想はまた今度
— いかろちゃん™@μSIM紛失系幼女 (@ikaro1192) 2015, 12月 20
@p_ck_ vimのイケメンな感じのプラグインになったら絶賛つかうよ!
— いかろちゃん™@μSIM紛失系幼女 (@ikaro1192) 2015, 12月 20
↓
Vim版を作った
インストール
以下の3つに依存します。
- Shougo/neosnippet.vim
- スニペット展開機能を使うためには必要
- tyru/open-browser.vim
- ドキュメントをブラウザで開くために必要
- ruby interface (:help if_ruby)
- 少し便利になる
なくても動きますが、最低限 NeoSnippet はインストールすることを推奨します。
インストールには NeoBundle などのプラグインマネージャを使用すると簡単です。
NeoBundle 'Shougo/neosnippet' NeoBundle 'tyru/open-browser.vim' NeoBundle 'pocke/serverspec.vim'
つかいかた
Snippet
snippet を使用するには、filetype
をruby.serverspec
に変更するか、直接snippetのファイルを読み込む必要があります。
:set ft=ruby.serverspec " or " パスはいい感じに読み替えて下さい :NeoBundleSource ~/.vim/bundle/serverspec.vim/neosnippets/ruby.serverspec.snip
すると、下記の動画のようにスニペットを使用することが出来ます。
このプラグインでは Serverspec のプログラムから snippet を生成しているため、Serverspec で定義されている全ての Resource/matcher に対してのスニペットを使用することが出来ます。
Document
また、このプラグインから Serverspec のドキュメントを開くことが出来ます。
:ServerspecDoc
コマンドを実行するとドキュメントのトップページを、:ServerspecDoc user
などと引数を指定すると指定した引数に関するページを開くことが出来ます。
また、ruby
インターフェイスが存在すれば引数を補完することができます。
将来展望
将来的には、Ruby のパーサである ripper を使用してオムニ補完関数を作ろうと思っています。
スニペットだとどうしてもその場面で使えない候補も出てきてしまいますが、オムニ補完関数として実装することでそのような問題を起きなくすることができます。
ほか
http://blog.glidenote.com/blog/2014/06/17/serverspec-snippets/
全く同じアプローチのプラグインが既にあったのですが、全ての要素を網羅しているわけではなかったので、これを作りました。