追記: Syntastic でどうにかするより Rails プロジェクトの .rubocop.yml
で設定したほうがいい→コメント参照
Syntasticは Vim でファイルを保存した時点でシンタックスチェッカーを実行し、結果をバッファに表示してくれるプラグイン。 Syntastic は Ruby の静的コード解析器 RuboCopにも対応している。
RuboCop に --rails
オプションを渡すと Ruby on Rails に特化したモードで解析してくれる。これを Rails プロジェクト内でだけ有効にするには、 rails.vimと組み合わせて以下のように設定する。
" Ruby ファイルに対し RuboCop を実行するletg:syntastic_ruby_checkers = ['rubocop']
" カレントディレクトリが Rails プロジェクトのディレクトリ以下であれば、" rails.vim によって b:rails_root がセットされる" これがセットされているときだけ RuboCop に --rails オプションを渡すauFileTyperubyif exists('b:rails_root')|
\ letb:syntastic_ruby_rubocop_options ='--rails'|endif
課題
Rails プロジェクトに含まれるが Rails とは関係しない Ruby スクリプト(たとえば my_rails_app/script/foo.rb
)にも --rails
オプションが適用される。これを防ぐには autocmd の条件式でカレントファイルのパスに /app/
または /spec/
が含まれているかどうかをチェックすればよいだろう。