Bundlerの使い方

  • 86
    いいね
  • 0
    コメント

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

参考