Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

bundle install した RuboCop を エディタで使う

$
0
0

正しい RuboCop が使用されない問題

Ruby を書いている人でエディタに RuboCop による構文チェックをさせている人は多くいるかと思います。
そして Gemfile で RuboCop を管理しているプロジェクトもあるかと思います。
そんな時に bundle install --path vendor/bundle -j4と vendor/bundle に RuboCop をインストールしても、エディタにはわかりません。
なのでエディタ内ではグローバルに RuboCop にインストールされている場合、そちらを使ってしまいます。

解決法

そんな時に、エディタに正しい RuboCop を使わせる方法です。
まず、
bundle install --path vendor/bundle -j4
ではなく、
bundle install --path vendor/bundle --binstubs vendor/bundle/bin -j4
で bundle install しましょう。
これは実行ファイルを vendor/bundle/bin に用意するということです。

そして direnv をインストールしましょう。
これは .envrc ファイルが置かれているディレクトリに入っている時だけ .envrc を元に環境変数をすり替えたりするものです。
ubuntu であれば、
sudo apt-get install -y direnv
でインストールすることができます。

インストール後、
cd project_root_directory
direnv edit .
とするとエディタが立ち上がります。
そして、
PATH_add vendor/bundle/bin
と書き込んで保存しましょう。 .envrc というファイル名で保存されます。
これで、 project_root_directory ディレクトリ内にいる間は環境変数 PATH に $PWD/vendor/bundle/bin が追加されるようになります。

この段階で bundle execを前に追加しなくても rubocopと呼ぶだけで、 bundler によってインストールされた RuboCop が呼び出されるようになります。
which rubocopで確認できます。
project_root_directory から出ると、また以前の RuboCop が呼び出されるようになります。

vim や emacs の場合は .envrc が置かれているプロジェクトルートディレクトリにいる状態で立ち上げれば、 bundler でインストールされた RuboCop を使うようになります。

visual studio code では direnv という名のプラグインを使用すると、プロジェクトルートディレクトリに .envrc ファイルが存在すると読み込んでくれるようになります。
atom などでも同じようなプラグインがあるような気がします(ない可能性も)。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>