【Ruby入門】今更聞けない!Ruby bundlerとは

【Ruby入門】今更聞けない!Ruby bundlerとは

こんにちは!Webコーダー・プログラマーの貝原(@touhicomu)です。

今日は、Rubybundlerについて解説します。

この記事では、

  • bundlerとは
  • bundlerのインストールとversion確認
  • bundlerの基本的な使い方

という基本的な内容から、

  • gemの依存関係とGemfile
  • Gemfileへのgemのバージョンの書き方
  • installとupdate時のgemfile.lock

などの応用的な使い方に関しても学習していきます。

このページで、Rubybundlerの使い方をよく把握して自分のスキルとしていきましょう!

bundlerとは

bundlerとは一言で言ってしまえば、「gemの依存関係とバージョンを管理するためのツール」です。

例えばAというgemがあって、Aを使うにはBというgemを使う必要がある、そのgemを使うにはCというgemを….
となっている時、AはBに依存しており、BはCに依存しているということになります。

そうなった時、一つ一つのgemをインストールするのって面倒ですよね?

しかし、bundlerを使えば、依存関係のあるgemを一括でインストールしてくれます!

一括でインストールしたgemはすべて、依存関係が解決された状態で、インストールされています。

一括でインストールされたgemは保存先を指定することができます。

上記のようにbundlerを実行すると、gemが現在のフォルダの配下のvendor/bundleにインストールされるようになります。

このようにプロジェクト別にgemをインストールすると、プロジェクトごとのgemのバージョンの違いを気にすることがなくなり便利です。

bundlerのインストールとversion確認

bundlerはgem install bundlerのコマンドでインストールすることができます。

実行後、以下のような表示が出れば完了です。

インストールしたあとは、rbenvを使っている場合、以下のコマンドを実行します。

rehashが何をやっているかというと、新規にインストールされたbundlerの実行ファイルへの実行フォルダをrubyが気にすることのないようにしています。

ざっくりと説明すると、rubyの実行フォルダに、bundl;erの実行ファイルのシンボリックリンク(実行ファイルへのリンク)を貼り直し(rehash)しています。

bundlerをインストールが成功しているか確かめるためにバージョンを調べましょう。
bunlderのバージョンは以下のコマンドで、確かめることができます。

bundlerの基本的な使い方

次にbundlerの使いかたを説明していきます。
bundlerでよく使うコマンドは三つあります。

bundle init

まずはbundle initです。

これは、gemをインストールするため各種インストールしたいgemを列挙したGememfileを作成するためのコマンドです。

これで以下のようなGemfileが作成されます。

bundle install

作成されたGemfileをもとにgemをインストールするコマンドがbundle installです。

試しにbundle initで作成したGemfileのrailsのコメントを外して、bundle installをしてみましょう。

このようなコードがでれば完了です。

このようにrailsと依存関係のあるgemが全てインストールされていることがわかります。

また、installのオプションに、「–path vendor/bundle」をつけると、gemを現在のフォルダの下のvendor/bundleにインストールしてくれます。

プロジェクトごとに違うgemを入れる場合や、プロジェクトごとに違うバージョンのgemを入れる場合に使用します。

bundle installについて詳しくは、以下の記事を参照してください。

理解必須!gemsのインストール方法とインストール場所
更新日 : 2017年3月2日

bundle update

bundle installと似ているコマンドにbundle updateというコマンドがあります。

インストールと同時に、gemに新しいバージョンがあれば更新するコマンドです。

bunlde updateを行うとエラーが解決するということもあるので、覚えておきましょう。

以上のような実行結果になれば、updateは完了です。

bundle installとbundle updateについて詳しくは、以下の記事を参照してください。

【Ruby・Rails・gem】それぞれのインストール
更新日 : 2019年4月19日

bundlerの応用的な使い方

gemの依存関係とGemfile

Gemfileには、インストールしたいgemを列挙します。

bundlerはGemfileに列挙されたすべてのgemのバージョンを調べ、gem同士のバージョンによる依存関係を解決します。

最終的にはrubyにすべてのgemを読み込んでも間違いがないような各種gemのバージョンをインストールします。

このように、

  • Gmfileには欲しいgemを書くこと
  • gemのインストールには「bundler install」を使用すること

のようにすると、煩わしいgemのバージョン間の依存関係に配慮しながらgemコマンドでgemをインストールする必要がなくなります。

bundlerとGemfileは、rubyの開発上で必須のツールと言えるでしょう。

Gemfileへのgemのバージョンの書き方

先にも述べたとおり、Gemfileには、インストールしたいgemを列挙します。

たとえば、railsのgemを入れたい場合は、以下のように書きます。

railsのバージョンを指定した場合は、以下のように書きます。

依存関係上バージョンがあがるのは仕方がないが、最低限このバージョンのgemが欲しいという場合は、以下のように書きます。

バージョンがあがるのは仕方がないが、メジャーバージョンアップだけはして欲しくない場合は、以下のように書きます。

上の例ではメジャーバージョンは「3」です。

通常、メジャーバージョンが上がると、大幅に使い方が変わったりしますので、このようにメジャーバージョンアップはしないような書き方があります。

なお、メジャーバージョンでない、下の方のバージョンはマイナーバージョンと言います。

通常、マイナーバージョンアップはバグ修正のためのバージョンアップで、使い方は大きく変わらないです。

そのため、マイナーバージョンアップは許可するようにしても良いでしょう。

installとupdate時のgemfile.lock

Gemfileにgemを列挙し、「bundler install」でgemをインストールすると、「gemfile.lock」というファイルができます。

この「gemfile.lock」は何かというと、インストールしたgemのバージョンを記載して保存しておくものです。

一度「gemfile.lock」ができると、使用するgemのバージョンが変わったりしません。

まさにgemのバージョンをロック(lock)して固定しているわけです。

この「gemfile.lock」があるかげで、開発時のgemとrubyのファイルと、本番環境でのgemとrubyの間が、gemのバージョンの違いにより動かなくなる、ということがなくなります。

自分たちの開発中でも、gemの開発者はgemのバージョンをどんどん上げていきます。

しかし、自分たちの開発環境のgemは「gemfile.lock」でロックされていて、gemのせいで急にrubyのプログラムが動かなくなる、ということにはなりません。

このように、gemのバージョンを固定して開発中に問題がおきないようにしているのが「gemfile.lock」ファイルです。

なお、「bundler update」をすると、gemがバージョンアップされますので、「gemfile.lock」も更新されます。

その場合は、新しいバージョンで固定されます。

まとめ

今回は、Ruby bundlerについて学習しました!

学習のポイントを振り返ってみましょう!

  • bundlerとはたくさんのgemのバージョン間の依存関係を解決しながらGemfileに列挙したすべてのgemをインストールしてくれるツール。
  • 「bundle init」を実行するとGemfileのひな形ができる。
  • 「bundle install」を実行するとGemfileに列挙したgemが依存関係を解決しながらインストールされる。
  • 「bundle update」を実行すると、Gemfileに列挙したgemが更新される。
  • Gemfileにはgemバージョンを指定したり、最低限のバージョンを指定したり、メジャーバージョンアップしないよう指定したりできる。
  • 「gemfile.lock」は、開発時と本番環境運用時で、gemのバージョンの違いにより、rubyプログラムが動かなくなることがないよう、gemのバージョンを固定(lock)してくれるためのもの。

以上の内容を再確認し、ぜひ自分のプログラムに生かし学習を進めてください!

Rubyカリキュラム無料公開中!

この記事はRuby入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Ruby学習に必要な情報を一つにまとめていますので効率よくRubyを学ぶことが出来ます。この機会に是非活用していただければと思います。

【Ruby入門ガイド】アプリ開発で知っておくべき知識を総ざらい
更新日 : 2018年11月23日

Rubyを最短で習得したい方へ

近年では様々なWEBサービスが流通するようになりました。

WEBサービスの普及が進むにつれて、それらを素早く開発するのに長けたRubyの人気は今後さらに増し、Rubyエンジニアの需要も自ずと増えることは間違いなしでしょう。

元々ITリテラシーの高い方や他言語を習得している方であれば、独学でRubyを習得することが可能です。

ただし、プログラミング学習をしている方の多くは

「自分に合った教材が見つけられずに挫折してしまった」
「勉強のための勉強になってしまい、ゴールが見えない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決するのに何日もかかってしまう」

このような悩みを抱えたまま挫折してしまうのが現実となっています。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
  • WEBアプリケーション開発までしっかりサポートして欲しい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、初心者の方がつまづきがちな、「CookPad」、「Wantedly」、「食べログ」のようなWEBアプリケーション開発方法もスムーズに学習することできます。

実際にオリジナルWEBアプリを開発し、成果物として認められて仕事獲得に成功した塾生は数多くいます。

このように、オリジナルアプリ開発から仕事獲得まで徹底的にサポートすることでプログラミング初心者の方でも安心して基礎学習に取り組むことができます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

Rubyならではの学習方法や、現役フリーランスRubyエンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像から弊社サービス内容をご確認ください。

ruby_a2

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

3000名以上来場の人気セミナーが開催決定

18歳で時給6000円だった侍エンジニア塾代表の木内より、『プログラミングで人生を変える』ための学習方法をお教えます。

0からプログラミングを習得し、フリーランスエンジニアになる方法プログラミング学習の効率を劇的に上げる学習メソッドを解説しますので、奮ってご参加ください。

  • 日付:4/20(土),4/27(土)
  • 時間:14:00〜17:35終了予定
  • 場所:当社 道玄坂オフィス
  • 住所:〒150-0043 東京都渋谷区道玄坂2丁目11-1 Gスクエア渋谷道玄坂 4F *Googleマップでは「東京都渋谷区道玄坂2丁目11-1」で検索してください。近隣にスクエア渋谷という別のビルがあるためご留意ください。
  • 参加費:無料
  • URL:https://seminar.sejuku.net/
詳しくは下の画像をクリックして弊社セミナー内容をご確認ください。

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

貝原 輝昌

貝原 輝昌

こんにちは!貝原(@touhicomu)と申します。
現在は、Web業界のフリーランスとして、主にPHP/WordPress/BuddyPress/VPSサーバー構築などの業務を受注しています。
現住所は、日本の西海岸、長崎県は波佐見町です。田舎ライフです。^^
地元の観光団体「笑楽井石」にボランティアでほたる撮影会やそば塾などのスタッフとして参加させて頂いています。
以下の活動も行っています。
 ・笑楽井石のブログ
 ・エクセル関数を日本語化するソフト
 ・エクセルVBAを日本語で記述するソフト