http://favotter.net/status.php?id=13069973879
こんにちは、4月からついに職業Rubyエンジニアになったmirakuiです。
あまり認めたくありませんが、Rubyは事実上、いまだに1.8系から1.9系への移行期にあります。
現在の安定版である1.8.7と1.9.1を開発環境に共存させている人も多いんじゃないでしょうか。
もううんざりだ
俺のMacBookに入ってるRubyをざっと調べてみました。
- /usr/bin/ruby
- 1.8.7。多分MacOSX(SnowLeopard)に最初から入ってたやつ?
- /usr/local/bin/ruby
- 1.8.7。多分自分でビルドしたやつ
- /opt/local/bin/ruby
- 1.8.7。MacPortsで入れたやつ
- /opt/local/bin/ruby1.9
- 1.9.1。MacPortsで入れたやつ
Ruby本体がこれだけあるということは、irb, gem, rake, rails などのコマンドも一式、rubyバイナリの数だけインストールされています。
こんななので、環境変数の設定にハマると一日潰れます。あほか!
rvmで全部良くなる
rvmは、複数バージョンのrubyを切り替えて使うためのツールです。rvm経由でrubyをインストールすると、rubyバイナリやgem等は、自分のホームディレクトリの.rvm/以下に作られます。つまり/usr/localとかが汚れないし、アンインストールも簡単にできます。
RVM(Ruby Version Manager)公式サイト
RVM: Ruby Version Manager -
RVM Ruby Version Manager - Documentation
日本語の解説は以下がわかりやすいです。
RVM [ja.nishimotz.com]
rvmの本体はgithubに公開されています。インストールは以下のとおりです(要git-core、curl)。
bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
これだけです。
このコマンドを実行すると、メッセージで表示されると思いますが、以下をshellの設定ファイルに追加しておきましょう。これで、shell起動時に、GEM_HOMEとかGEM_PATH、RUBYLIBといった面倒な環境変数を.rvm以下にセットしてくれます。
if [[ -s /home/◯◯/.rvm/scripts/rvm ]] ; then source /home/◯◯/.rvm/scripts/rvm ; fi
Rubyのインストールと切り替え
rvmを使ってRubyを入れてみましょう。
$ rvm install 1.9.1
これで、Ruby1.9.1がビルドされます。いま入れたRubyをアクティブにしてみましょう。
$ rvm 1.9.1
これだけです。では環境を確認しましょう。
$ which ruby irb rake gem /home/mirakui/.rvm/rubies/ruby-1.9.1-p378/bin/ruby /home/mirakui/.rvm/rubies/ruby-1.9.1-p378/bin/irb /home/mirakui/.rvm/rubies/ruby-1.9.1-p378/bin/rake /home/mirakui/.rvm/rubies/ruby-1.9.1-p378/bin/gem $ ruby --version ruby 1.9.1p378 (2010-01-10 revision 26273) [i686-linux] $ echo $GEM_HOME /home/mirakui/.rvm/gems/ruby-1.9.1-p378 $ echo $GEM_PATH /home/mirakui/.rvm/gems/ruby-1.9.1-p378:/home/mirakui/.rvm/gems/ruby-1.9.1-p378@global
自分のホームディレクトリの.rvm以下に全部入っているのが分かると思います。
$ rvm 1.9.1 --default
とすると、シェルを立ち上げなおしても同様に1.9.1が選択されます。
素晴らしい!
rvmを使うと、Rubyやgemが.rvm以下にまとめられます。これで色んな恩恵があります。
*1:話は別になりますが、gemコマンドをやたらとsudoで実行するのはやめましょう。システムを書き換えるgemとか作れてしまうので。基本的にはユーザのホームディレクトリに入れるのが安全です