ayuminのあまり更新しないBlog

筆不精なのでめったに更新しません

RubySpec(準備編)

RubySpecはその名のとおりRubyの仕様を定義するプロジェクトである。長年Rubyの仕様はMatzの頭の中やMLやIRCの議論の中の暗黙の了解的な部分があったりなんかして詳細な仕様がどこにもかかれていなかった。
まぁふつうに使う分には書籍やリファレンスマニュアル(これもまだまだ整備されていないが)に書いてあることくらいでなんとかなるのだけれど、MRI以外のRuby処理系を
作ろうとしている人たちにとっては大問題らしい。で、業を煮やした(のか知らないが)Engine Yardの人がRubyの仕様を実行可能なテストとして全部記述するというプロジェクトを始めたのがコレである。
このプロジェクトが完成すれば誰もがRuby処理系がRubyの仕様に適合しているかどうかを判断することができる。しかもRuby1.9.2は「RubySpecを完全にパスしないとリリースしない」とYuguiさんが公言していたりする割と重要なプロジェクトだったりもする。

最近だと大場光一郎さんとかがいつのまにかコミッターとして加わっていたり、asakusa.rbの人たちが毎週がんばっていたりする。自分は職場のロケーションの都合でasakusa.rbには参加できないのだけれども今年はもうちょっとRubyに貢献できないかということでRubySpecに挑戦してみたいとおもう。

準備

準備にあたっては以下のサイトを参考にしました。

mspecのインストール

asakusa.rbのページによるとなぜかgemでとってくるのではなくてgithubからcloneしてこいということなので素直に従う。

$ git clone git://github.com/rubyspec/mspec.git
$ cd mspec
$ rake package
$ sudo gem install pkg/mspec-1.5.13.gem
$ mspec -v
mspec 1.5.13

無事インストール完了。

RubySpecの取得

これもgithubからとってくるとのこと。
$ git clone git://github.com/rubyspec/rubyspec.git

rvmのインストール

rvmは結構最近できたツール複数Rubyの環境を簡単に切り替えて使うことができるようになるとっても便利なものだ。思えば昨年こんなことをruby-listにPOSTしてるびきちサンに「おまえは1.9を使うな」と言われ、松田さんには「素敵な燃料投下ををありがとうございます!」といわれてしまった私にとってまさに望んでいたものが手に入りました。

インストールは普通にgemでできます。

$ sudo gem install rvm
********************************************************************************

  In order to setup rvm for your user's environment you must now run rvm-install.
  rvm-install will be found in your current gems bin directory corresponding to where the gem was installed.
インストールを完了させるために、rvm-installを実行してください。rvm-installはgemの実行ファイルが置かれるところにあります。
(要はrailsとかspecとかのコマンドがインストールされるとこ) 

  rvm-install will install the scripts to your user account and append itself to your profiles in order to
  inject the proper rvm functions into your shell so that you can manage multiple rubies.

********************************************************************************
Successfully installed rvm-0.0.99
1 gem installed
Installing ri documentation for rvm-0.0.99...
Installing RDoc documentation for rvm-0.0.99...

で、書いてあるとおりにrvm-installを実行する。

$ rvm-install
/opt/local/lib/ruby/gems/1.8/gems/rvm-0.0.99/bin/rvm-install:4: warning: Insecure world writable dir /Users in PATH, mode 040777

Installing rvm to /Users/ayumin/.rvm/ ...

rvm - shell scripts that allows a user to manage multiple ruby versions in their own account.

Darwin Notes:
Darwin(まぁOS Xと読み替えて差し支えない)
    *  curl is required.(curl が必要です)

    *  For Snow Leopard be sure to have XCode Tools Version 3.2.1 (1613) or later (there were bugs with the dvd release version). (Snow Leopard では3.2.1以降のXCodeがインストールされていることを確認してね)

    *  You should download the latest XCode tools from developer.apple.com. This is necessary since the dvd install for Snow Leopard has bugs.(最新のXCodeを入手してねDVDについてるものにはバグがあるので)

    *  If you intend on installing MacRuby you must install LLVM first. (もしMacRubyをインストールするつもりならLLVMをインストールしてね)

    *  If you intend on installing JRuby you must install the JDK. (もしJRubyをインストールするつもりならJDKをインストールしてね)

    *  If you intend on installing IronRuby you must install Mono (version 2.6 or greater is recommended). (もしIronRubyをインストールするつもりならMonoの2.6以降をインストールしてね)

RTFM:  http://rvm.beginrescueend.com/

HELP:  http://webchat.freenode.net/?channels=rvm 
================================================================================

 ayumin,


Thank you for using rvm. I hope that it makes your work easier and more enjoyable.
If you have any questions, issues and/or ideas for improvement please hop in #rvm on irc.freenode.net and let me know.
My irc nickname is 'wayneeseguin' and I hang out from ~09:00-17:00EST and again from ~21:00EST-~00:00EST.
If I do not respond right away, please hang around after asking your question, I will respond as soon as I am back.

  w⦿‿⦿t!

    ~ Wayne

================================================================================

You must now finish the install manually:

1) Place the folowing line at the end of your shell's loading files(.bash_profile and/or .zshenv), after all path/variable settings:

     if [[ -s /Users/ayumin/.rvm/scripts/rvm ]] ; then source /Users/ayumin/.rvm/scripts/rvm ; fi
(↑のスクリプトをログインシェルの設定ファイルに書きましょう)
2) Ensure that there is no 'return' from inside the .bashrc file. (otherwise rvm will be prevented from working properly).
(.bashrcの中にreturnがないことを確認してください。さもなくばrvmはちゃんと動かないでしょう)
3) CLOSE THIS SHELL and open a new one in order to use rvm.
(このシェルを閉じて新しいシェルを起動してください)

rvm 0.0.99 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]

わたしはbashを使っているので.bash_profileを編集すればいいらしい。

# rvm setting 2010.01.01
if [[ -s /Users/ayumin/.rvm/scripts/rvm ]] ; then 
  source /Users/ayumin/.rvm/scripts/rvm ; 
fi

こんな感じかな。

ターミナルをいったん閉じて新しいターミナルをあげるか、source ~/.bash_profile するとrvm が使えるようになっているはず。

$ rvm -v 
rvm 0.0.99 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]

とりあえずrvmの中の何かをupdateしておいた方がいいそうなので

$ rvm update --rev head

であとは好きなrubyを入れる。今回入れたのは

$ rvm install 1.9.1 # => 1.9.1 p376が入った
$ rvm install 1.9.1-head #=> 1.9.2devが入った
$ rvm install 1.9.2-head #=> やっぱり1.9.2devが入った
$ rvm install jruby #=> jruby 1.4.0 が入った

そしてasakusa.rbがお勧めしている

$ rvm install shouhei #=> またもや1.9.2dev

rubyの切り替えるには

$ rvm use 1.9.1

とかやると切り替わる。ちなみにシステムの標準(今回の場合1.8.7)に戻すときは

$ rvm use system

で戻ります。