Gemfile, Gemfile.lockとbundle installについて
こんにちは!
今回はGemfile, Gemfile.lockとbundle installについてまとめます。
Gemfileとは
- bundlerを使ってインストールしたいGemのリスト
- 環境構築の際に必要なGemをまとめて指定できる
- バージョンを指定することが出来る
Gemfile.lockとは
- bundlerを使ってインストールしたGemの結果のリスト
- Gemfileに記載されていたGem以外にも、依存関係のあるGemについても記載される
- 実際にインストールしたGemとそれぞれのバージョンを把握できる
- 次回の環境構築の際には、Gemfile.lockを元に環境を再現できる
bundle installとは
- bundlerを使ってGemをインストールするためのコマンド
- どの情報を元にGemをインストールするかについては次の2パターンある
パターン① gemfile.lockが存在しない場合
- Gemfileを元に、指定された範囲のバージョンのGemと、依存関係のあるGemをインストールする
- インストールした結果をまとめたファイルをGemfile.lockとして作成する
パターン② gemfile.lockが存在する場合
- Gemfile.lockに記載されているバージョンのGemをインストールする
パターンが分岐する理由
- bundle installの初回実行時にGemfile.lockが作成されるため、初回実行時はGemfile.lockが存在しない
細かい注意点
- Gemfile.lockが存在する場合でも、Gemfileの内容が変更されていてGemfile.lockの内容と齟齬が生じている場合は、Gemfileの内容を元にbundle installされる
おわりに
以前dockerを用いてRailsの環境を作成した際にも、Gemfile, Gemfile.lockとbundle installについていまいちよくわかっていませんでしたが、今回調べたおかげで大分理解が進んだ気がします。
33/100