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

Bundlerの使い方

More than 3 years have passed since last update.

gemとは?

  • 決まったフォーマットで提供されるRuby言語用のライブラリを「gem」と呼びます。
  • 「gem」には例えば以下のようなものがある。
    • Rails(Webフレームワーク)
    • Sinatra(Webフレームワーク)
    • omniauth(認証機能)
    • unicorn(アプリケーションサーバ)
    • Rspec(テストフレームワーク) ...etc
  • PerlでいうCPAN、phpでいうpear等にあたる

Rubygemsとは

  • yumやaptと似た、gem専用のパッケージ管理システム。
  • 以下サイトにてgemの情報公開、提供を行っている。 https://rubygems.org/

Bundlerとはなんぞや

  • gemは以下のように個別に手動インストールする事が可能です。
    • gem install "sinatra"
    • gem install "unicorn"
    • gem install "omniauth"
  • しかし、様々なgem(ライブラリ)を組み合わせて使っていると「gemAのver1とgemBのVer2はうまく動くけど、最新バージョン同士だとうまく動かない。」という互換性の問題が出てくる場合があります。
  • また、複数人、複数環境で開発を行う場合は、各環境で使うライブラリの名前、バージョンを合わせる必要があります。
  • こういった場合に、gem同士の互換性を保ちながら各gemの導入、管理を行ってくれるのがBundlerです。
  • Gemfileというファイルにインストールしたいgemを記述し、それを元にbundlerを使ってインストールを行います。
  • bundler本体以外のgemは基本的にbundler経由でインストールを行うのがおすすめです。

Bundlerのインストールの仕方

  • Bundlerのインストール
    • Bundlerもgemの1つです。手動ダウンロードしましょう
      • gem install bundler
    • 導入後はバージョンが表示される事を確認してください。
      • bundler -v

Bundlerの使い方

  1. Gemfileの作成
    • bundle init
    • 上記実行するとGemfileという雛形ファイルが作成されます
  2. 使用したいgemをGemfileに記述する
    • Gemfileを編集する
      • vi Gemfile
    • Gemfileの先頭に、インストール元はrubygemsですよ、と宣言を行います。
      • source "rubygems"
    • 続けてインストールしたいgemを記述します
      • gem "sinatra"
      • gem "unicorn"
      • gem "omniauth"
    • gemの指定の際に、バージョンの指定も可能です
      • gem 'rails', "~> 4.2.4"
  3. Gemfileにリスト化したgemを一括インストール
    • 一括インストール
      • bundle install --path vendor/bundle
    • --pathでインストール先を指定可能。一度でも--path指定でインストールしたら、次回以降はpath指定無しでbundle installを行っても同じpathが選択されます。
    • この時、インストールしたgemの名前とバージョンを記載した「gemfile.lock」というファイルが作成されます。
  4. インストールしたgemをプログラムソース上でロード
    • まずソース上でrubygemsをrequireします。
      • require "rubygems"
    • 以下のように記述するとインストールした内容からrequireを行うように(指定無しだとシステム最新のgemを使ってしまいます)
      • require "bundler/setup"
  5. プログラムを実行する際は、最初にbundle execを実行します。(指定無しだと互換性を考慮せずにシステム最新のgemを使ってしまう)
    • bundle exec ruby foo.rb

参考

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