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

Bundler, Gemfile, Gemfile.lock について

More than 1 year has passed since last update.

Bundler と Gemfile と Gemfile.lock について、忘れた自分が読んでも分かるようにまとめました。簡単なので、多分もう読むことはないかも知れませんが、ここに置いていきます。

詳しい情報は公式を読むようにして、ここでは簡単に説明を書きます。

Bundler.io::How to manage application dependencies with Bundler

Bundler

Bundler の前にまず、Ruby に関係するパッケージを総称して RubyGems といいます。開発に便利なライブラリやフレームワークをパッケージにし、公開されたそれらを Rubyist 達は RubyGems、Gem、Gems と呼んでいます。Gem に限らずパッケージの依存関係を管理することが安定の為にも重要です。

そして Bundler とは、それら依存関係を管理してくれるツールです。例えば、ある Gem が依存している別の Gem や、それらのバージョン管理であったり、他にも Test や Dev や Pro といった環境ごとに別のバージョンを使用する等に必要となります。

ちなみに、この Bundler も RubyGems のひとつです。

gem install bundler

Gemfile

では Bundler は何に基づいて必要な Gems を探すのでしょうか。それを記述したものが Gemfile です。Bundler はあなたが書いた Gemfile の内容に従って RubyGems.org から Gem を探して準備します。必ずしもこのサイトではありませんが、その殆どはここで公開されます。

まずは Gemfile を Bundler.io::Gemfile のシンタックスに従って記述します。そしてそれらをインストールするコマンドが以下です。

bundle install

Gemfile.lock

では Gemfile.lock とは一体は何なのでしょうか。Bundler はあなたが書いた Gemfile に従ってそれら Gems を用意しますが、実際にはあなたが書いた Gems だけでは不十分であったり、更にそれを使用する為には、また別の依存した Gems が必要になることが往々にしてあるのが現実です。それらを判断して本当に必要なものをすべて揃えた結果が書かれているのが、この Gemfile.lock です。

bundle install / bundle update

最初、Gemfile.lock には何も書かれていませんが、bundle install することで Gemfile に基づいた実際に必要なすべての Gems がインストールされます。開発途中、また別の Gems が必要になった場合には Gemfile にそれを追加して bundle install します。そうすると Gemfile.lock の内容も更新されます。

しかし、すでに用意された Gem に変更を加える場合は Gemfile.lock を修正し、 bundle update を行います。例えばバージョンの変更や不必要な Gem を削除したい時などです。

しかしこれをプロダクション環境で行ってはいけません。必ずテストして修正し問題がないことを確認します。

viola
投稿から1年以上経っている記事を参考する際は注意してください。場合によっては古すぎます。
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