複数バージョンのRubyが使える開発環境を構築してみた

In: Ruby / Rails| technology

21 1月 2012

MacBookAirを買って、最初からRubyがインストールされていたのは、非常に喜ばしいことだったのですけれども。
地味ーに最新のバージョンではないのですよね(買ったのもずいぶん前のことだったということもありますが)。
以前、Homebrewを取り入れたときにデフォルトでインストールされているものよりもバージョンが上のものがとれてきたので、これで解決とも思っていましたが、RVMという、もっと便利な手法があるとのこと。試してみることとしました。

RVMって何ぞ?

“Ruby enVironment (Version) Manager”の略称で、複数のバージョンのRubyやgemsを共存させることができるもののようです。
gemsも替えられるので、Railsのバージョンも複数持つなんてこともできます。どのRuby、どのgemsを使うかをコマンドひとつで切り替えられるのが素敵ですね。

インストール

ということで、早速インストール。本家サイトを参考に以下のコマンドを入れます。

$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )

今回は安定版を入れることにしました。

Downloading RVM from wayneeseguin branch stable
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  799k  100  799k    0     0  99066      0  0:00:08  0:00:08 --:--:--  172k

Installing RVM to /Users/katawara/.rvm/
    Adding rvm loading line to '/Users/katawara/.bash_profile'.

# RVM:  Shell scripts enabling management of multiple ruby environments.
# RTFM: https://rvm.beginrescueend.com/
# HELP: http://webchat.freenode.net/?channels=rvm (#rvm on irc.freenode.net)
# Screencast: http://screencasts.org/episodes/how-to-use-rvm

# In case of any issues read output of 'rvm requirements' and/or 'rvm notes'

Installation of RVM in /Users/katawara/.rvm/ is almost complete:

  * To start using RVM you need to run `source /Users/katawara/.bash_profile`
    in all your open shell windows, in rare cases you need to reopen all shell windows.

  * Optionally you can run `rvm tools rvm-env ruby bash` which will generate 
    shebang wrappers for easier selecting ruby in scripts.

# ,
#
#   Thank you for using RVM!
#   I sincerely hope that RVM helps to make your life easier and more enjoyable!!!
#
# ~Wayne

シングルユーザでのインストールなので、/Users/username/.rvmにディレクトリが作られます。

$ls .rvm/
LICENCE       bin/          examples/     hooks/        man/          scripts/      wrappers/     
README        config/       gems/         installed.at  patches/      src/          
VERSION       contrib/      gemsets/      lib/          patchsets/    tmp/          
archives/     environments/ help/         log/          rubies/       user/  

.bash_profileにもこんな感じで書きこまれます。

$cat .bash_profile
...(略)...
[[ -s "/Users/katawara/.rvm/scripts/rvm" ]] && source "/Users/katawara/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

インストールの確認は、”source .bash_profile”で.bash_profileを更新してから、以下のコマンドを打つときちんと入っているかが確かめられます。

$ source .bash_profile
$ type rvm | head -n1
rvm is a function

これが出ればインストール完了。

実際に使ってみる

まずは、以下のコマンドでインストールできるものを確認します。

$ rvm list known
# MRI Rubies
1.8.6[-p420]
1.8.6-head
1.8.7[-p357]
1.8.7-head
1.9.1-p378
1.9.1[-p431]
1.9.1-head
1.9.2-p180
1.9.2[-p290]
1.9.2-head
1.9.3-preview1
1.9.3-rc1
1.9.3[-p0]
1.9.3-head
ruby-head

# GoRuby
goruby

# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.6.1
jruby-1.6.2
jruby-1.6.3
jruby-1.6.4
jruby-1.6.5
jruby[-1.6.5.1]
jruby-head

# Rubinius
rbx-1.0.1
rbx-1.1.1
rbx-1.2.3
rbx-1.2.4
rbx[-head]
rbx-2.0.0pre

# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2011.12]
ree-1.8.6-head
ree-1.8.7-head

# Kiji
kiji

# MagLev
maglev[-head]
maglev-1.0.0

# Mac OS X Snow Leopard Or Newer
macruby[-0.10]
macruby-nightly
macruby-head

# IronRuby -- Not implemented yet.
ironruby-0.9.3
ironruby-1.0-rc2
ironruby-head

普通のRubyだけでなく、MacRubyとかJRuby、IronRubyまであるんですね。
とりあえず、新しいものがほしいので、1.9.2を入れてみよう。

$ rvm install 1.9.2
Fetching yaml-0.1.4.tar.gz to /Users/katawara/.rvm/archives
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  460k  100  460k    0     0   100k      0  0:00:04  0:00:04 --:--:--  110k
Extracting yaml-0.1.4.tar.gz to /Users/katawara/.rvm/src
Configuring yaml in /Users/katawara/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/katawara/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/katawara/.rvm/usr
Installing Ruby from source to: /Users/katawara/.rvm/rubies/ruby-1.9.2-p290, this may take a while depending on your cpu(s)...

ruby-1.9.2-p290 - #fetching 
ruby-1.9.2-p290 - #downloading ruby-1.9.2-p290, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 8604k  100 8604k    0     0   624k      0  0:00:13  0:00:13 --:--:--  321k
ruby-1.9.2-p290 - #extracting ruby-1.9.2-p290 to /Users/katawara/.rvm/src/ruby-1.9.2-p290
ruby-1.9.2-p290 - #extracted to /Users/katawara/.rvm/src/ruby-1.9.2-p290
ruby-1.9.2-p290 - #configuring 
ruby-1.9.2-p290 - #compiling 
ruby-1.9.2-p290 - #installing 
Retrieving rubygems-1.8.15
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  245k  100  245k    0     0   182k      0  0:00:01  0:00:01 --:--:--  565k
Extracting rubygems-1.8.15 ...
Removing old Rubygems files...
Installing rubygems-1.8.15 for ruby-1.9.2-p290 ...
Installation of rubygems completed successfully.
ruby-1.9.2-p290 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
ruby-1.9.2-p290 - #importing default gemsets (/Users/katawara/.rvm/gemsets/)
Install of ruby-1.9.2-p290 - #complete 

これでRubyとgemsのインストール完了。今rvm上で管理されているRubyのバージョンを見たいときは、以下のコマンド。

$ rvm list

rvm rubies

   ruby-1.9.2-p290 [ x86_64 ]

# Default ruby not set. Try 'rvm alias create default '.

# => - current
# =* - current && default
#  * - default

複数バージョン入ると、rvm rubiesの中身が増えていく形ですね。
インストールされたものは、.rvm/rubies/と.rvm/gemsの中に入っていきます。

$ ls .rvm/rubies/
ruby-1.9.2-p290
$ ls .rvm/gems
cache			ruby-1.9.2-p290		ruby-1.9.2-p290@global

Rubyのインストールが終わったら、実際に入れたものを使うよう指定してみます。
“rvm use [VERSION]“のコマンドで切り替えることができます。

$ which ruby
/usr/local/bin/ruby
$ which gem
/usr/local/bin/gem
$ rvm use 1.9.2
Using /Users/katawara/.rvm/gems/ruby-1.9.2-p290
$ which gem
/Users/katawara/.rvm/rubies/ruby-1.9.2-p290/bin/gem
$ which ruby
/Users/katawara/.rvm/rubies/ruby-1.9.2-p290/bin/ruby

見事に切り替わりましたね。
もともと入れてたものをやっぱり使いたくなったときは、

$ rvm use system

とすればOK。
また、常にデフォルトで使いたいものを指定したい場合は、

$ rvm --default use 1.9.2

として、デフォルトを解除したい場合は、

$ rvm reset

とすればよいです。

gemもコマンド一個で切り替えたりできるけど、それはまた別の機会にでも。参考にした記事がそこら辺も触れているので、そちらを見てもらってもいいかも。
仕事の場面だったら、プロジェクトごとに使うRubyやgemの状態を切り替えて、都度まっさらな状態にして環境構築を安全お手軽に、なんてこともできそう。こういうのがさくっとできたら、なんだかスマートですね。

Via:


Comment Form

About this blog

ゆるーく、ふわーっと、興味のままに。

自分のかたわらに置いておくメモ代わり。

Photostream