Carpe Diem

備忘録。https://github.com/jun06t

Bundler と Gemfile を扱う

◆用語の整理

gem

 ライブラリ。gem install xxxx で簡単にライブラリをインストールできる。

Gemfile

 インストールするgemを書いたファイル。バージョンの指定ができる。

Bundler

 Gemfileに列挙されたgemを、依存関係を解決して全部インストールしてくれるツール

 

◆Bundlerのインストール

$ gem install bundler

Rubyをrbenvでインストールした場合は、gem install後に以下のコマンドを実行する必要があります。

$ rbenv rehash

 

◆Gemfileを作成

Gemfileを以下のように作成します。

source 'https://rubygems.org'

gem 'rails'

こうすると最新のrailsを選択してインストールしようとしてくれます。2014/07/01だとv4.1.2がインストールされました。 またGemfileではバージョンを指定してインストールすることもできます。バージョン違いで環境を再現できないことはよくあるので、非常にありがたい機能ですね。

 

◯バージョンを完全に固定したい場合

gem 'rails', '4.0.0'

◯指定バージョン以降の最新版

gem 'rails', '>=4.0.0'

◯メジャーバージョンアップはさせない固定方法

gem 'rails', '~>4.0.0'

こうすると「4.0.0以上かつ4.1.0以下」のバージョンをインストールしてくれます。今回だと4.0.6がインストールされました。 一番後ろのバージョンの最新版をとってくるので、

gem 'rails', '~>4.0'

こうすると4.1.2がインストールされちゃいます(4.0以上かつ5.0以下)ので注意。

 

◆Bundlerでインストール

Gemfileがあるフォルダで以下を実行

$ bundle install

一度これを実行すると Gemfile.lock というものが作られます。 これがあるとこの中身で指定するバージョンをインストールするようになります。 なので改めてバージョンを指定したいときは削除してください。

 

◆確認

指定したバージョンをgemを使用したい場合はコマンドの最初に「bundle exec」をつけます。

$ bundle exec gem list

*** LOCAL GEMS ***

actionmailer (4.1.2)
actionpack (4.1.2)
actionview (4.1.2)
activemodel (4.1.2)
activerecord (4.1.2)
activesupport (4.1.2)
arel (5.0.1.20140414130214)
builder (3.2.2)
bundler (1.6.3)
erubis (2.7.0)
hike (1.2.3)
i18n (0.6.9)
json (1.8.1)
mail (2.5.4)
mime-types (1.25.1)
minitest (5.3.5)
multi_json (1.10.1)
polyglot (0.3.5)
rack (1.5.2)
rack-test (0.6.2)
rails (4.1.2)
railties (4.1.2)
rake (10.3.2)
sprockets (2.12.1)
sprockets-rails (2.1.3)
thor (0.19.1)
thread_safe (0.3.4)
tilt (1.4.1)
treetop (1.4.15)
tzinfo (1.2.1)

こうすると今回指定したバージョンのgem一覧のみ表示してくれます。普通に

$ gem list

*** LOCAL GEMS ***

actionmailer (4.1.2, 4.0.6, 4.0.0)
actionpack (4.1.2, 4.0.6, 4.0.0)
actionview (4.1.2)
activemodel (4.1.2, 4.0.6, 4.0.0)
activerecord (4.1.2, 4.0.6, 4.0.0)
activerecord-deprecated_finders (1.0.3)
activesupport (4.1.2, 4.0.6, 4.0.0)
arel (5.0.1.20140414130214, 4.0.2)
bigdecimal (1.2.4)
builder (3.2.2, 3.1.4)
bundler (1.6.3)
erubis (2.7.0)
hike (1.2.3)
i18n (0.6.9)
io-console (0.4.2)
json (1.8.1)
mail (2.5.4)
mime-types (1.25.1)
minitest (5.3.5, 4.7.5)
multi_json (1.10.1)
polyglot (0.3.5)
psych (2.0.5)
rack (1.5.2)
rack-test (0.6.2)
rails (4.1.2, 4.0.6, 4.0.0)
railties (4.1.2, 4.0.6, 4.0.0)
rake (10.3.2, 10.1.0)
rdoc (4.1.0)
sprockets (2.12.1)
sprockets-rails (2.1.3, 2.0.1)
test-unit (2.1.2.0)
thor (0.19.1)
thread_safe (0.3.4)
tilt (1.4.1)
treetop (1.4.15)
tzinfo (1.2.1, 0.3.39)

とすると過去にインストールされたバージョンも表示します。

 

ソース:

Bundlerの使い方・Gemfileの書き方

RubyGems (gem) の使い方・インストール方法