Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
208
Help us understand the problem. What is going on with this article?
@tnoda_

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

More than 5 years have passed since last update.

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 をリポジトリに含めない.
  • (そうでないものは,開発環境=運用環境としたい気持ちの強さでどちらかに倒す)

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

参考

208
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
tnoda_
Scala ときどき Clojure

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
208
Help us understand the problem. What is going on with this article?