Help us understand the problem. What is going on with this article?

bundle install と updateの違い

More than 5 years have passed since last update.

まずは改めて各ファイルの役割から。

Gemfile:必要となるgemを記述します。
Gemfile.lock:現在使用しているgemのバージョンおよび特定のgemを使うためにインストールする必要のあるgemの一覧が管理されます。

んで、bundle installbundle updateですが、

bundle installGemfileに更新があれば、未インストールのgemがインストールされ、Gemfile.lockが更新される。更新がなければGemfile.lockに従ってgemの更新を行う。Gemfile.lockが存在しない場合はGemfileに従ってgemの更新を行い、Gemfile.lockを作成する。
bundle updateGemfileに従ってgemの更新を行い、Gemfile.lockを上書きする。

ということでした。PHPでcomposerはバンドルをcomposer.jsonに追加した際に、composer updateをするので、gem追加時にbundle installをすることに慣れず、ちょっと戸惑いました。インストールしたgemは私の環境ではrbenvというRubyのバージョンを簡単に変更できるサービスを利用しているので、/home/vagrant/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/に保存されていました。

ユースケースとしては

  • 新環境で開発スタート:bundle install
  • 開発中に新しいgemを追加:bundle updateで常にバンドルを最新版に保つ
  • デプロイ:bundle install

って感じがいいのかな、と思いました。開発環境だとできるだけbundle updateして、バンドルを最新版に保っておいてあげると仲間から喜ばれそうですね。くれぐれも本番環境でbundle updateだけはアウトです。これはcomposerも一緒。

YusukeHigaki
株式会社ニコリーで代表をしております。起業当初は自分でも開発をしていたのですが、最近はCTO以下、自分より遥かに優秀なメンバーにバトンタッチし、もっぱら企画や営業周りを統括しています。自分で書いていた経験もあり、エンジニアという職種に対するリスペクトは絶大です。
http://ticktockblog.com
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