Rails

【Railsエラー】vender/bundleにgemが入ってしまう時の解決方法

Rails

 

今回は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に大量の変更履歴が上がってしまうということです。

vender/bundle 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ディレクトリを削除しましょう。

Image from Gyazo

 

ここまで、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に大量の変更履歴が上がってしまうことを避けたい場合は、ぜひこの方法を試してみてくださいね。