STUDY MEMO

学習のメモ書き

<Ruby on Rails> Githubにgemをチェックインしない方法

.gitignoreへの設定

githubにgemfileとgemfile.lockをインストールしていることから、gem自体のインストールは不要。(push時とても重くなるなどの弊害がある)
そのため、gitの管理下から外しgithubへチェックインしないように、.gitignoreファイルに以下の記載をする。

チェックインとは:
変更を加えたファイルをバージョン管理システムリポジトリに反映する操作のこと。
チェックインとは何? Weblio辞書

# Gemfile
# Ignore installed gem file.
/vendor/bundle

gemの保管先の指定

gemをインストールして保存する先を指定することで、gemのバージョンをプロジェクトごとに管理できる。

$ bundle install --path vendor/bundle

--pathオプションとは?
bundlerによってgemがインストールされる場所を指定するオプション。
この後に呼び出されるbundle installは、もともと--pathに渡されたディレクトリにgemをインストールする。
bundler実行時にはその場所からgemが実行される。
これをつけないとデフォルトのシステムへ保存される。
デフォルトの保存先は今回rbenvを使用しているので、以下のコマンドでみることができる。

$ gem env home

--path vendor/bundleをつけ忘れた場合

すでにチェックインしたファイルをgitの管理下から外し、チェックインから外すようにするには、ファイルの追跡を解除し、それを無視するように設定する必要がある。
今回はvendorのbundleディレクトリまとめて削除するため、-rオプションを使用する。
git rm の-rオプションは、「recursive」の頭文字を取ったもので、ターゲットディレクトリとそのディレクトリの全てのコンテンツが削除されるようになる。

$ git rm -r cached vendor/bundle

参考文献

bunle install するときの --path vendor/bundle オプション - haayaaa’s diary

【Ruby入門】今更聞けない!Ruby bundlerとは | 侍エンジニアブログ

【Rails】結局bundlerって何?bundlerの仕組みを図解形 | Pikawaka - ピカ1わかりやすいプログラミング用語サイト

GitHub - rbenv/rbenv: Groom your app’s Ruby environment

http://ruby.studio-kingdom.com/bundler/bundle_install/

git rm | Atlassian Git Tutorial