bundle install でパスを指定するコマンド。
bundle install --path vendor/bundle
- プロジェクトディレクトリ配下の
vendor/bundle
にgemがインストールされる --path
でインストール先を指定できる- 一度パスを指定したら覚えてくれるので、次回以降はパス指定をする必要はない
しかしこのbundle install --path vendor/bundle
、調べれば調べるほどに賛否両論な手法のようだ。
なぜvendor/bundleを指定するのか
vendor/bundleとは何か
- vendor/bundleとは、そのプロジェクトにおいて
bundle install
したgemを管理する場所- ここにgemがインストールされる
- そのPCシステムにインストールしたわけではない
- そのときだけ使うgemを管理するディレクトリ
- Rails特有のものではなく、システム開発において一般的なもの
- 自分が開発しているものではない、サードパーティのライブラリを入れる場所
- ライブラリの管理をしやすくするように使われている
bundle install --path vendor/bundle
することで何が起きているのか
- パス指定オプションにより、プロジェクト下のvendor/bundleディレクトリに
bundle install
したgemがインストールされる - グローバルにインストールされたgemと、bundlerが管理するgemが分離される
bundle install --path vendor/bundle
の問題点
- 似たようなアプリケーションを開発する場合、同じgemを各アプリケーション下のvendor/bundleにインストールすることで、要領を圧迫する可能性がある
bundle install
との違い
bundle install
でインストールすると、システム領域のrubyにインストールされる- グローバルでgemを管理する
参考: bundle install --path vendor/bundleと、bundle listとgem listの違いについて - Qiita
どんな場合にbundle install --path vendor/bundleをするべきか
- 異なるバージョンのgemが混ざるが嫌な場合
- 開発時においては必要ない