Gemfile.lock とは何もの? | Ameba を使ってみるブログ

Ameba を使ってみるブログ

Ameba の調査もろもろ。

今更ながら Gemfile.lock を Git に登録すべきか悩む。
そもそも、Gemfile をよく理解していない。

現在の Gemfile の理解
  • Ruby のパッケージを管理システム
  • Gemfile に依存パッケージを書いておくと誰か (bundle?) が勝手に取ってきてくれる
ピッケル本が手元になかったので、Rails 本 第四版で Gemfile を索引から探す。
p.243 に軽く説明がある。

----------------------------------------
* Gemfile: Rails アプリケーションの依存関係を記述するファイルです。
厳密に言うと、このファイルは Rails ではなくアプリケーションが使います。
config/appliction.rb と config/boot.rb に Bundler への呼び出しがあります。

* Gemfile.lock: Rails アプリケーションごとに異なる依存関係やバージョンが記録されています。
このファイルを管理するのは Bundler です。
リポジトリにチェックインすべきファイルです。
----------------------------------------

Gemfile.lock はリポジトリにチェックインすべき。はい、終了。

でも、やっぱり Gemfile と Gemfile.lock の関係がわからない。あと Bundler との関係性も。
さらにいうと Gem との関係も混乱している。。。

config/appliction.rb と config/boot.rb をのぞいてみる。
うーむ。なんか "Bundler" とか "BUNDLE_GEMFILE" とかあるけど、よくわからん。

「Gemfile.lock = Gemfile + アプリケーション固有」って読めるんだけど、
Gemfile のこの Rails アプリケーション固有の情報じゃないの?

Rails 本 第四版をさらに読み進める。で結果、今の理解は以下の通り。
  • Gemfile.lock は Bundler によって更新される。
  • Gemfile を元に実際の動作環境で使われる Gem のバージョンが Gemfile.lock に記述される?
  • Gemfile.lock を登録しておけば、さまざまな動作環境で同じバージョンのライブラリが使用される。
  • よって、Gemfile.lock を登録すべき。
で、いいのかなぁ。実動作環境に依存したファイルを登録しておくのもどうかと思うけど。

30 分かけてこの程度の理解。

RailsによるアジャイルWebアプリケーション開発 第4版/オーム社
¥3,360
Amazon.co.jp