Ubuntu12.10 + rbenv + ruby1.9.3 or ruby2.0 + Rails4

現在、ruby1.9.3からruby2.0、rails3からrails4への移行ブーム真っ只中。

Ubuntu12.10にrbenv環境を構築して、ruby1.9.3とruby2.0を切り替えて使えるようにした。

あと、railsも4.0をインストールして動かしてみた。

rbenvとは?

公式サイト→sstephenson / rbenv

このページを見ている人は既に知っていると思うが、rbenvとは、Linuxマシン上で複数のrubyバージョンを使い分けをできるようにしてくれる環境のこと。

実際には、複数のrubyバージョンを~/.rbenv/versionsフォルダにインストールしておき、ruby2.0を使いたい場合は~/.rbenv/versions/2.0.0-p0フォルダにあるrubyコマンドを使用し、ruby1.9を使いたい場合には~/.rbenv/versions/1.9.3-pxxxを使用するといったように、適切に呼び出すようにすることで、rubyのバージョンの使い分けを実現してくれる。

 

似たような機構にrvmというものがある。こちらについては私は全く知らないが、最近ではrvmからrbenvへ乗り換える人も多いらしく、これから使うならrbenvが正解だと思う。

rbenvをインストール

インストールには、rbenv-installerという便利なパッケージが用意されているようなので、これを利用する。

curlコマンドをインストール。

私の環境にはcurlコマンドがインストールされていなかったのでインストール。

$ sudo apt-get install curl

rbenvとその他をインストール

$ curl https://raw.github.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash

これだけでrbenvと必要なパッケージがインストールされるらしい。

実際に何をやっているかはhttps://raw.github.com/fesplugas/rbenv-installer/master/bin/rbenv-installerをブラウザで開けばなんとなく分かる。

依存ライブラリをインストール

zlib1g-devをインストール。

これをインストールしていない状態でrbenv installを実行してrubyをインストールすると、その後のgem installコマンドが成功しない状態になる。

$ sudo apt-get install zlib1g-dev

 

libreadline6-devをインストール。

$ sudo apt-get install libreadline6-dev
libreadline6-devをインストールしていない状態でrubyをインストールすると、その後のrails consoleコマンドが成功しない状態になる。

こんな感じになる。

$ rails c
/home/rorikon/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/irb/completion.rb:9:in `require': cannot load such file -- readline (LoadError)

Ubuntuの場合、rubyをインストールするタイミングはlibreadline6-devがインストールした後、ということさえ気にしておけばOK。

端末(bash)の設定

影響範囲をbashに限定するために、bashの起動オプションファイルである~/.bashrcに設定を追加する。

$ echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘ >> ~/.bashrc
$ echo ‘eval “$(rbenv init -)”‘ >> ~/.bashrc

これをしたらいちどbashを起動しなおしてこの設定を有効化するのを忘れずに。

(ハードディスククラッシュしたので、自分の記事を読みながら再度環境設定していてハマった。。)

インストールできるrubyのバージョンを確認

ruby/ruby Tagsを確認すると、ruby1.9.3の最新バージョンは1.9.3-p392で、ruby2.0の最新バージョンは2.0.0-p0ということがわかる。

rbenv環境にruby 2.0をインストール

$ rbenv install 2.0.0-p0
Downloading ruby-2.0.0-p0.tar.gz…
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz
Installing ruby-2.0.0-p0…
Installed ruby-2.0.0-p0 to /home/nagahoge/.rbenv/versions/2.0.0-p0

 

インストールしたruby2.0は、まだ反映されていない。(ここでバージョン表示されているruby1.9.3は、sudo apt-get install rubyとしてインストールされたrubyであって、rbenvとは全く関係無い。紛らわしくて申し訳ない。)

$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

 

rubyをrbenvにインストールした後のみrehashが必要になる。

$ rbenv rehash

 

ruby2.0を使用するように設定

$ rbenv global 2.0.0-p0

 

以降、rubyコマンドやgemコマンドからは、ruby2.0が使用されるようになる。

$ ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [i686-linux]

 

$ gem install rails

$ rails -v
Rails 3.2.12

rbenvを使用している場合はgem installコマンドにsudoは不要。
理由はgemも自分のホームディレクトリにインストールされるから。

rbenv環境にruby1.9.3をインストール

$ rbenv install 1.9.3-p392
Downloading yaml-0.1.4.tar.gz…
-> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b
Installing yaml-0.1.4…
Installed yaml-0.1.4 to /home/nagahoge/.rbenv/versions/1.9.3-p392

Downloading ruby-1.9.3-p392.tar.gz…
-> http://dqw8nmjcqpjn7.cloudfront.net/46a2a481536ca0ca0b80ad2b091df68e
Installing ruby-1.9.3-p392…
Installed ruby-1.9.3-p392 to /home/nagahoge/.rbenv/versions/1.9.3-p392

$ rbenv rehash
$ rbenv global 1.9.3-p392
$ ruby -v
ruby 1.9.3

以降は、rbenv globalにバージョンを指定するだけで、コロコロと使用するrubyバージョンを切り替えることができる。

ruby2.0 + Rails4.0

ruby2.0環境に、Rails4.0をインストールしてみる。

再びruby2.0を使用するように切り替え。(切り替えるのがなんだか楽しい)

$ rbenv global 2.0.0-p0

インストールできるrailsのバージョンを確認する

$ git clone https://github.com/rails/rails.git
$ cd rails
$ git tag
v3.2.8.rc1
v3.2.8.rc2
v3.2.9
v3.2.9.rc1
v3.2.9.rc2
v3.2.9.rc3
v4.0.0.beta1

どうやらまだ4.0.0.betaしか無いようなので、選択の余地は無かった。
Riding Rails: Rails 4.0: Beta 1 released!でアナウンスされている通りだった)

 

現在はまだバージョンを明示しないとrails3がインストールされるため、明示的にバージョン指定しているが、将来はバージョン指定しなくてもいいようになる。

$ gem install rails –version 4.0.0.beta1 –no-ri –no-rdoc
$ rails -v
Rails 4.0.0.beta1

 

railsプロジェクトを作って動かしてみる。

$ rails new rails-4.0-project

$ echo ‘gem “therubyracer”‘ >> Gemfile

$ bundle

$ rails g scaffold posts title body:text

$ rake db:migrate

$ rails s

ちゃーんと動いた。

rails4-0-welcome

 

ちなみに、Rails4.0.0.beta1をインストールしたけど、Rails3.2.12を使いたいような場合には、Rails newコマンドを使ってrailsプロジェクトを作成する時だけ明示的に指定してやれば、プロジェクト内からはそのバージョンのrailsコマンドになる。

$ rails _3.2.12_ new rails-3-project
$ cd rails-3-project/
$ rails -v
Rails 3.2.12

 

何故かというと、railsプロジェクトのGemfileでrailsのバージョンが記載されているから。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=2318