[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
参考
Author And Source
この問題について([Mac]VScode で ruby-rubocop が動かなくなったら executePath を設定してみよう), 我々は、より多くの情報をここで見つけました https://qiita.com/tommy_aka_jps/items/ca7ae36717b69a7e390b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .