LoginSignup
1
0

More than 3 years have passed since last update.

【Rails】bundle install と bundle update の違いとは?

Last updated at Posted at 2020-06-04

bundle install と bundle update の違い

この2つについて理解する前に必要な事前知識、Gemfile、Gemfile.lock、そしてBundlerとは何か?について書いていこうと思います。

Bundlerとは?

gemを管理するgem。
Bundlerのおかげでbundle installbundle updateを使うことができる。

Gemfileとは?

gemをインストールするための「設計図」のようなイメージ。

Gemfile.lockとは?

実際にgemをインストールした後の「結果図」のようなイメージ。
gem同士が関連しあっていることが多いため、Gemfileに書いてあるgemの他にも必要なgemが生じる。
その場合、Bundlerが自動で必要なgemをインストールし、Gemfile.lockに記述してくれる。

なぜGemfile.lockが必要なのか?

Gemfileは設計図。インストールするgemしか記述されていない。
また、gemに関するgemも記述されてなく、本番環境と開発環境でインストールされるgemのバージョンも統一することができない。
しかし、Gemfile.lockを使うことで、どの環境でも同じgem、gemのバージョンを使用できるようになる。

bundle install と bundle update について

では、事前知識を得ることができたので、本題に移る。

bundle install

Gemfile.lockをもとにgemをインストールする。
この時、Gemfile.lockに記述されていない且つ、Gemfileに記述されているgemがある場合、そのgemとそのgemに関連するgemをインストール後、Gemfile.lockをインストールする。

bundle update

Gemfileをもとにgemをインストールする。
その後、Gemfile.lockを更新する。

2つのコマンドの使い分けについて

bundle install → 新しい環境や、Gemfileに新しくgemを記述した時に使用。
bundle update → gemのバージョンを更新する時に使用。(bundle install ではGemfile.lockにあるgemについては更新しないため)

まとめ

bundle installはGemfile.lockを参照してgemをインストールする。また、
 Gemfile.lockが存在しない場合、Gemfileをもとにgemをインストールした後、Gemfile.lockを作成する。
bundle updateはGemfile.lockを無視し、Gemfileをもとにgemをインストール後、Gemfile.lockを更新する。
・Gemfile.lockを無視するため、bundle installとは異なり、gem同士の依存関係(バージョン等)が刷新される。

なるほど。基本的に実開発中はbundle installを使うことが多そうだな。
bundle updateを使う時は慎重に使おう。

1
0
0

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
1
0