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