はじめに
$ 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 を追記します。
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 を管理していこうという自分への戒めです。今回は以上となります。