Ruby
Gem
bundler
rbenv

Rbenvを用いた複数バージョンRuby管理方法

More than 3 years have passed since last update.


rbenvの導入とRubyのインストール


  • rbenvの導入

# (Macの場合)

$ brew install rbenv
$ brew install ruby-build
$ brew install readline

gitから取って来たい場合はこちらでも可能

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv

$ mkdir -p ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build


  • パスの設定

# ZSH用

$ vi ~/.zshrc

export PATH=$HOME/.rbenv/bin:$PATH

eval "$(rbenv init - zsh)"


  • rubyのインストール

# ほしいバージョンを確認

$ rbenv install -l
# インストール
$ rbenv install 2.1.1
# 変更があった場合のおまじない
$ rbenv rehash
# グローバル(標準)に使えるように設定
$ rbenv global 2.1.1


  • bundlerのインストール

# これはグローバルのrubyに対して入れることになる

$ gem install bundler
$ rbenv rehash


プロジェクト毎に使用するRubyを変える


* 現在インストールされているrubyのバージョン確認

$ ruby -v

ruby 2.1.1p76 (2014-02-24 revision 45161)

$ gem -v
2.2.2

$ rbenv versions
system
1.9.3-rc1
2.0.0-rc2
* 2.1.1


  • 特定プロジェクトに移動しrubyのバージョンを指定

$ cd project1

# 変えたいバージョンを指定する
$ rbenv local 1.9.3-rc1
# おまじないは忘れずに
$ rbenv rehash

# 成功すると.ruby-versionファイルが生成される
$ cat .ruby-version
1.9.3-rc1

$ruby -v
ruby 1.9.3dev (2011-09-23 revision 33323)

$gem -v
1.8.0


特定プロジェクト毎にgemを管理する

system領域にgemを入れるとごちゃつくのでプロジェクト毎に管理できるようにします。


  • bundlerでgemインストール先を指定する

# 特定のプロジェクトのみで有効になる

$ bunle install --path <指定フォルダ>
# 上記でインストールしたものは以下で実行
$ bundle exec <コマンド名>

なお--pathで指定した場合には、.bunle/configとして情報が残りますので、次回以降は--pathを指定する必要はなくなります。


  • bundlerで開発環境、テスト環境、本番環境を管理する

Gemfileではグループを使って環境ごとのgem構成を使い分けることができます。

:production -> 本番環境

:development -> 開発環境

:test -> テスト環境

$ vi Gemfile

group :production do

gem 'capistrano'
end

group :development do
gem 'less'
gem 'rspec-rails'
end

group :test do
gem 'rspec'
end

そして環境ごとに--without指定でインストールしたくないものを指定します。

# 本番環境(production)にインストールする場合

$ bundle install --without development test
# 開発環境(development)にインストールする場合
$ bundle install --without production test
# テスト環境(test)にインストールする場合
$ bundle install --without production development


  • bundler管理のgemを削除する

bundlerで--path指定してgemインストールしている場合、

いらなくなったら上記フォルダごと削除すれば元にもどります。


その他Tips


  • gemインストールを早くする

デフォルトだとインストール時にドキュメント関係もインストールするので結構時間がかかります。

不要な場合は.gemrcでインストールしないように指定します。

$ vi ~/.gemrc


~/.gemrc

gem : --no-ri --no-rdoc



  • GitHubにあるgemを利用する

$ vi Gemfile

gem "goo", :git => "https://github.com/bar/foo.git"