LoginSignup
24
22

More than 3 years have passed since last update.

bundle install --path vendor/bundle で余計なコードをgit管理から除外するために。

Posted at

はじめに

$ bundle install --path vendor/bundle

私は普段、Railsアプリを作成する際に、gem のインストール先が Ruby 環境でなくプロジェクト毎に gem を管理できるようにvendor/bundleフォルダをインストールパスに指定してこのコマンドを実行しています。

ですが、vendor/bundle を .gitignore に設定していないと、すべての gem が git 管理されてしまい、 bundle install 後の git push がけっこう重くなったりしていました。それに、必要な gem は git 管理対象の Gemfile と Gemfile.lock に書いてあるので、vendor/bundle 配下にある gem 自体を git 管理する必要がそもそもありませんでした。

対処法

vendor/bundle の git 管理から外すため、.gitignore に vendor/bundle を追記します。

.gitignore
vendor/bundle

本来はアプリを作成して bundle install する前にこれをやっておけばよかったのですが、私の場合はこれをやらなかったので、もうひと手間必要になりました。

1.ローカルで vendor/bundle を削除

$ rm -rf vendor

ローカル上の vendor/bundle 配下のディレクトリが全て消去されます。リモートとの差分を確認すると、削除した vendor/bundle 配下のディレクトリ等が赤字で表示されます。

$ git status
deleted:    vendor/bundle/~~~~~~~~~~~~
・
・
・
・

2.変更した内容をリモート(GitHub)にpush

$ git add .
$ git commit -m "vendor/bundleの削除"
$ git push origin master

ローカルとリモートのコードの差分がなくなります。

3.再度bundle installの実行

$ bundle install --path vendor/bundle

ローカル側に再び vendor/bundle が復活します。

4.Git管理からの除外確認

$ git status
On branch master
nothing to commit, working tree clean

.gitignore 編集前は、 bundle install 後の git status で vendor/bundle 配下のディレクトリ等が大量に差分変更として表示していましたが、 git 管理から除外したためworking tree cleanの表示になりました。

今後はこのように gem を管理していこうという自分への戒めです。今回は以上となります。

24
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
22