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
GemコマンドとBundlerの基礎 - BlueTechNote
Gemコマンドを使用
$ gem install
$ gem update
$ gem uninstall
bundler
- Bundler をインストールする
- Gemfile にインストールするGem を書く
- bundle installコマンドでインストールする
- bundle updateコマンドでGemをバージョンアップする
- Bundler をインストールする
(m・_・bp) 17:50 ~/Desktop/vsnote2.0/ruby % gem install bundler
Fetching bundler-2.1.4.gem
Successfully installed bundler-2.1.4
Parsing documentation for bundler-2.1.4
Installing ri documentation for bundler-2.1.4
Done installing documentation for bundler after 2 seconds
1 gem installed
- Gemfile にインストールするGem を書く
(m・_・bp) 17:51 ~/Desktop/vsnote2.0/ruby % bundle init
Writing new Gemfile to /Users/uekiyoshihiro/Desktop/vsnote2.0/ruby/Gemfile
- bundle installコマンドでインストールする
(m・_・bp) 17:53 ~/Desktop/vsnote2.0/ruby % bundle install
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Using bundler 2.1.4
Fetching coderay 1.1.2
Installing coderay 1.1.2
Fetching method_source 1.0.0
Installing method_source 1.0.0
Fetching pry 0.13.1
Installing pry 0.13.1
Bundle complete! 1 Gemfile dependency, 4 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
- bundle updateコマンドでGemをバージョンアップする
(m・_・bp) 17:58 ~/Desktop/vsnote2.0/ruby % bundle update
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Using bundler 2.1.4
Using coderay 1.1.2
Using method_source 1.0.0
Using pry 0.13.1
Bundle updated!
よく使うコマンド集
$ bundle init #Gemfileを生成
$ bundle install #Gemfileに書かれたgemパッケージをインストール
$ bundle exec #Bundlerでインストールされたgemパッケージを使用してコマンドを実行
$ bundle list #インストール済みのgemパッケージの一覧を表示
$ bundle update #インストール済みのgemパッケージのバージョンを更新