Just do IT

思うは招く

bundle install: プロジェクト下のvendor/bundleを指定する

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を管理する
    • rbenvでRubyバージョンを管理している場合は、そのバージョンのRubyについてのグローバル環境にgemがインストールされる

参考: bundle install --path vendor/bundleと、bundle listとgem listの違いについて - Qiita

どんな場合にbundle install --path vendor/bundleをするべきか

  • 異なるバージョンのgemが混ざるが嫌な場合
    • 開発時においては必要ない

参照