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もgemの1つです。手動ダウンロードしましょう
Bundlerの使い方
- Gemfileの作成
- bundle init
- 上記実行するとGemfileという雛形ファイルが作成されます
- 使用したいgemをGemfileに記述する
- Gemfileを編集する
- vi Gemfile
- Gemfileの先頭に、インストール元はrubygemsですよ、と宣言を行います。
- source "rubygems"
- 続けてインストールしたいgemを記述します
- gem "sinatra"
- gem "unicorn"
- gem "omniauth"
- gemの指定の際に、バージョンの指定も可能です
- gem 'rails', "~> 4.2.4"
- Gemfileを編集する
- Gemfileにリスト化したgemを一括インストール
- 一括インストール
- bundle install --path vendor/bundle
- --pathでインストール先を指定可能。一度でも--path指定でインストールしたら、次回以降はpath指定無しでbundle installを行っても同じpathが選択されます。
- この時、インストールしたgemの名前とバージョンを記載した「gemfile.lock」というファイルが作成されます。
- 一括インストール
- インストールしたgemをプログラムソース上でロード
- まずソース上でrubygemsをrequireします。
- require "rubygems"
- 以下のように記述するとインストールした内容からrequireを行うように(指定無しだとシステム最新のgemを使ってしまいます)
- require "bundler/setup"
- まずソース上でrubygemsをrequireします。
- プログラムを実行する際は、最初にbundle execを実行します。(指定無しだと互換性を考慮せずにシステム最新のgemを使ってしまう)
- bundle exec ruby foo.rb
参考
- Rubygemsのススメ | Rubyに慣れていない初心者さんへ
http://qiita.com/sumyapp/items/5ec58bf3567e557c24d7 - Bundler概要
http://qiita.com/hisonl/items/162f70e612e8e96dba50 - Bundlerとは
http://shokai.org/blog/archives/7262