[Mac]VScode で ruby-rubocop が動かなくなったら executePath を設定してみよう


世間では Advent Calendar が大変盛り上がっている今日この頃ですが今日もふつうの小ネタ記事をお送りいたします\(^o^)/

概要

Windows で Rails 等の開発をしていた際に、VScode に ruby-rubocop をインストールして、リアルタイムに rubocop のエラーが出るようにしていました。

ちょっと前に Mac に作業環境を移行した際にも同様の拡張機能をインストールしましたが、何故か Mac では rubocop のリアルタイムチェックが行われませんでした。それを解消した際の記録を事例として紹介します。

対象環境

  • MacBook Air (13-inch, Early 2015)
  • macOS 10.13.6 High Sierra
  • Visual Studio Code(バージョン 1.27.2)

事象

https://github.com/misogi/vscode-ruby-rubocop#rubocop-for-visual-studio-code
Windowsで開発していたころは上記のように rubocop の警告内容がリアルタイムに表示されていたのですが、Macでは下線も警告も何も出ていないことに気がつきました。(rubocop の警告が何も出ていないと思い込んでいた)

さらに VScode の通知欄をよく見ると、下記2点のエラーが出ていたことに気がつきました。

  • rubocop is not excutable
  • execute path is empty! please check ruby.rubocop.executePath

解消手順

ということで前述のエラーの解消をすれば直るんじゃないか?と思った次第です。
上記のメッセージに従って、ruby.rubocop.executePath を追加しましたのでその際の流れを下記に記載します。

1. rubocop の実行パス確認

コマンドで確認するのが簡単で確実ですね。

$ which rubocop
/Users/{MyUserName}/.rbenv/shims/rubocop

2. VScode の設定ファイルに追記

基本設定 > 設定 > ユーザー設定 > 拡張機能 > ruby-rubocop に前項で控えたものを下記のように貼り付けます。rubocop コマンドを実行するフォルダまでわかればいいので、最後の rubocop までは書く必要ありません。

結果

リアルタイムで rubocop の警告が出るようになりました。

推定要因

//If not specified searches for 'rubocop' executable available on PATH (default and recommended)
"ruby.rubocop.executePath": "",

上記は 公式ドキュメント からの引用です。
推測の域は出ませんが、上記のとおり本来はこの項目の設定はしなくても rubocop の実行パスは環境変数からうまいこと取得してくれるようです。ただ、当方の環境では rbenv 経由で ruby を使っているからそのへんがうまくいってないゆえに起こる事象のように思えます。
Windows では ruby のインストーラで直接インストールしていたのでこの問題は起きなかったと考えれば辻褄は合いそうです。

このリアルタイム警告があるとないでは作業効率がぜんぜん違うと思います。もし同様の例が起きた際には参考にしていただければ幸いです。とはいえ最終的にはコマンドで rubocop すれば済むので急ぎの方はコマンドで対応しましょう(身も蓋もないですがw

参考