今回はvender/bundle以下にgemがインストールされてしまう時の解決方法を紹介したいと思います。「bundle install」実行時に一度でも「–path vendor/bundle」をオプションとして付けてしまうと、その設定を解除しない限りvender/bundle以下にgemがインストールされてしまうため注意しましょう。
vender/bundleとは
$ bundle install --path vendor/bundle
上記のように「–path vendor/bundle」を付けて「bundle install」を実行すると、導入されるgemがアプリケーションディレクトリ内に保存されます。gemをアプリケーション毎に管理したい時に使われるコマンドです。
また、「–path vendor/bundle」を付けて「bundle install」を一度でも実行すると、その設定を解除するまでvender/bundle以下にgemが保存されてしまうという特性があります。
vender/bundleのデメリット
「–path vendor/bundle」はgemをアプリケーション毎に管理できるので、gemのバージョン違いによって起こる問題を解決してくれます。
しかし一方で、このオプションにはあるデメリットがあります。
それは「vender/bundle」をgitignoreしていないと、gitに大量の変更履歴が上がってしまうということです。

解決方法
以下の2点を行うことで、この設定を解除することができます。
- .bundle/config以下のBUNDLE_PATH: “vendor/bundle”の行を削除
- vender/bundleディレクトリの消去
では実際に、vender/bundleにgemをインストールし、解消までデモンストレーションを行ってみます。前提として今回は、TestBundleというアプリケーションを作成して実行しています。
$ rails new TestBundle
$ cd TestBundle
$ bundle install --path vendor/bundle
ここまででTestBundleというアプリケーションをテキストエディタで開いてみましょう。そうすると以下のように.bundleディレクトリとvender/bundleディレクトリが生成されているはずです。
↓ TestBundleをテキストエディタで開いた時

それでは実際にvender/bundle以下にgemがインストールされる状況を解除していきましょう。まずは、.bundle/config以下のBUNDLE_PATH: “vendor/bundle”の行を削除していきます。
以下のコマンドを実行しましょう。
$ cd TestBundle
$ sudo vim .bundle/config
vimを開いたら、その中にあるBUNDLE_PATHの記述を削除します。
↓ .bundle/config
BUNDLE_PATH: "vendor/bundle"の行を削除
最後に、アプリケーションに入っているvender/bundleディレクトリを削除しましょう。

ここまで、vender/bundleにgemがインストールされてしまう設定を解除できました。あとは通常通り「bundle install」を実行すれば終了です。
ちなみに
「bundle install」実行時に「–path vendor/bundle」つけるべきかどうかは、「つける派」と「つけない派」の派閥があるそうですね。
僕は「–path vendor/bundle」を付けない方法で教わってきましたが、一度も「–path vendor/bundle」が必要になる場面はありませんでしたよ。
↓ 参考記事はこちら
https://qiita.com/jnchito/items/99b1dbea1767a5095d85
今回はvender/bundleにgemがインストールされてしまう時の解決方法を紹介しました。gitに大量の変更履歴が上がってしまうことを避けたい場合は、ぜひこの方法を試してみてくださいね。