bundle install した gem ファイルは、git 管理してはいけない
gem ファイルは git 管理しないこと
まずそもそもの大前提として gem ファイルを初めとしたライブラリは git 管理してはいけません。
gem に限らず世の中にはたくさんライブラリと呼ばれるものがあります。
こうしたライブラリはコミットをせずに、bundle install
などのライブラリをインストールするコマンドを使って管理するのが一般的です。
gemファイルをコミットしてしまうと、Git で管理するファイルが膨大になってしまい、いろんな作業に何かと時間がかかるようになってしまいます。
一番イメージしやすいのは git clone
で時間がかかってしまうことでしょう。
コミットをしたからといって挙動的に問題があるわけではありませんが、コミットをしなくてもよいファイルをコミットして時間がかかってしまうのはもったいないのでやめておきましょう。
ポートフォリを作成とかでもチェックされるかも
採用面接のために作成するポートフォリオサイトは別にサイトの出来栄えをチェックすることよりも、その人がどんな技術力があるかをチェックします。
つまりサイトが綺麗でも、中のコードが汚ければ「コードが綺麗にかけない人なんだなあ」と思いますし、git で管理しなくても良さそうなファイルがコミットされていれば、「まだ git について理解はできていないのかなあ」とか思います。
人によって気にするポイントは違うと思いますが、自分は結構気にしますねー。
対応方法
.gitignore
という git 管理から除外するファイルやディレクトリを指定できるファイルがあるので、これを使いましょう。
.gitignore に追加するだけです。
vendor/bundle
おまけ: そもそもコミットした記憶がない人へ
多分 gem ファイルをコミットしてしまう人は、gem ファイルをコミットしてしまっている
という意識を持っている人は少ないと思います。
Rails アプリケーションの開発をする時、 Gemfile に追加をして bundle install
をしますよね。
bundle install
する時に path オプションをつけてコマンドを実行したりしているかもしれません。
bundle install --path vendor/bundle
path オプションをつけること自体は、特に問題ではないのですが
path オプションをつけた場合とつけない場合で gem ファイルがインストールされる場所が違う
というポイントは抑えておきましょう。
そして、今回タイトルで指摘したような問題が起きるのは path オプションをつけた場合です。
path オプションをつけるとどうなるのか
path オプションをつけると
bundle install
コマンドを実行するカレントディレクトリから path オプションで指定をしたディレクトリ以下に gem ファイルがインストールされる
という風になります。
なので、別に vendor/bundle というのは固定ではなくて、hogehoge/fuga とかやれば hogehoge/fuga ディレクトリが作成されて、その下に gem ファイルがインストールされます。
なので Rails プロジェクトの直下に vendor/bundle ディレクトリが作成され、その下に各種 gem がインストールされていくことになります。
この状態で何も考えずに
git add .
git commit -m 'This is a pen'
とやってしまうと、vendor/bundle 以下も丸っとコミットされてしまう...ということですね。
path オプションはいらないかも
path つけなくてもよいのでは、的な話もあります。