210
208

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gemspec と Gemfile と Gemfile.lock との違い.

Last updated at Posted at 2013-02-07

Ruby で gem 管理に使われる Bundler. その Bundler で依存関係を解決するために使われるファイルには,

  • gemspec
  • Gemfile
  • Gemfile.lock

の 3 つがあります.これら 3 つのファイルの区別を意識することはあまりありませんが,それぞれ異なる役割を担っています.

3 つのファイルの役割

各ファイルの役割を簡単にまとめます.

gemspec

  • gem の依存関係を記述します.

Gemfile

  • 依存する gem の取得先を記述します.
    • 通常は取得先は source 行一行だけでよいはず.
    • GitHub リポジトリなどから edge バージョンを取得する場合は,その場所をここに書く.

Gemfile.lock

  • 開発環境と運用環境とで同じ gem をインストールするために使います.
    • bundle などで自動で生成されます.
    • 依存 gem のバージョンと取得先が記録されます.

Gemfile.lock の扱いについて

Gemfile.lock については,これをリポジトリに含めるかどうかが議論されるのですが,前節で述べたように,「開発環境と運用環境とで同じ gem をインストール」したいかどうかで決めればよいかと思います.すなわち,

  • 確実動作が期待されるアプリでは Gemfile.lock をリポジトリに含める.
  • デプロイの自由度を確保したいライブラリは Gemfile.lock をリポジトリに含めない.
  • (そうでないものは,開発環境=運用環境としたい気持ちの強さでどちらかに倒す)

とするのがよいでしょう.

参考

210
208
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
210
208

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?