Chapter 02

1-2. Bundler の準備

Masuyama
Masuyama
2022.10.15に更新

Bundler の準備

今回は、便利な gem というライブラリの依存関係を解決してくれる Bundler について解説、および設定していきます。

Bundler の概要

Ruby では便利なライブラリが多数存在しており、それらはgemといいます。
本カリキュラムで使用する Ruby on Rails というフレームワークも gem の一つです。

それ以外にも多数の gem を使用することになりますが、
ある gem を使用するためには他の gem が必要であり、
しかもそのバージョンは x.x.x 以上で... といった依存関係を管理しなければいけません。

こういった面倒な依存関係を管理するために使用するのが、この章でインストールする Bundler です。
(Bundler 自体も gem の一つです。)

Bundler は開発現場では必ずといっていい程使用する gem ですので、
この後出てくる GemfileGemfile.lock を含めて知っておくべき概念です。

是非、手順を進める前にこちらの参考サイトをご一読ください。
多少ボリュームはありますが、開発現場に入るかもしれない方は方は読んでおくことをおすすめします。

Bundler インストール

Ruby をインストールしてさえいれば、gem install コマンドで好きな gem をインストールします。
ターミナル (Git Bash) を開き、次のコマンドを実行します。
ここではバージョンを指定して Bundler をインストールしましょう。

$ gem install bundler -v "2.3.15"
Fetching bundler-2.3.15.gem
Successfully installed bundler-2.3.15
Parsing documentation for bundler-2.3.15
Installing ri documentation for bundler-2.3.15
Done installing documentation for bundler after 1 seconds
1 gem installed

インストールできたら、指定したバージョンがインストールできているかを確認します。

$ bundler -v
Bundler version 2.3.15

Gemfile 作成

Bundler を使うときには予め Gemfile という、インストールしたい gem の情報をまとめたファイルを作成します。
直接作成することもできますが、bundle init コマンドで作成しましょう。
(以前に作成した workspace ディレクトリで実行します。)

$ cd ~/workspace
$ bundle init

上記のコマンドを実行したディレクトリ (workspace) 内に
Gemfile というファイルが作成されていることを確認してください。

作成された Gemfile の中身を VSCode 等、お好きなエディタで開き、以下のように編集します。

source 'https://rubygems.org'

gem 'rails', '~> 7.0.3'

Gemfile では上記のように、インストールしたい gem (ここでは rails) とそのバージョンを指定しています。

バージョンを何も書かなければ常に最新版がインストールされますが、
上記の書き方では rails 7.0.x の最新をインストールすることになります。

バージョン指定方法などについて興味がある方は、こちらの記事を参考にしてください。

gem のインストール (bundle install)

Gemfile を workspace ディレクトリ内に用意できたら、Gemfile の定義に従って gem をインストールします。

インストールするコマンドは bundle install というコマンドですが、
ローカルの環境を汚さないように workspace ディレクトリ内に gem をインストールすることをおすすめします。

そのためのコマンドを使用し、/workspace/.bundle ディレクトリ内にインストールするよう設定します。

$ bundle config set path '.bundle'

設定できたら、bundle install コマンドを実行します。

$ bundle install
...
Bundle complete! xx Gemfile dependencies, xxx gems now installed.

このコマンドはお使いのPCによっては稀に失敗する場合があり、
初学者の方がつまずきやすいポイントなので注意しましょう。

ターミナルにBundle complete!と表示されていれば問題なくインストールできていますが、
そうでなければ何かしらのエラーで失敗しています。

原因は様々ですのでまずはエラーメッセージで Google 検索して調べるのが近道です。

インストールした gem を実行

さて、/.bundleディレクトリ内に gem がインストールされました。
これで workspace ディレクトリ内ではインストール済みの gem を使用することができます。

ただし、Bundler で依存関係を解決しながらインストールした gem をコマンドで使用する際は、
gem 専用コマンドの前に bundle exec を付ける必要があるので注意してください。

例えば rails のバージョンを確認するには通常 rails -v と実行しますが、今回の場合は bundle exec rails -v と実行します。

$ bundle exec rails -v
Rails 7.0.3.1

なお、このときに Gemfile が見つからない旨のメッセージが表示されたら、実行するディレクトリが間違っているか、gem を正しくインストールできていない可能性があります。
切り分けの参考にしてみてください。

$ bundle exec rails -v
Could not locate Gemfile or .bundle/ directory