Another Japan in the World

Jun Aruga's blog, who lived in Japan, Singapore, live in Czech Republic. Mainly about IT and travel.

Read source code of Ruby and Ruby on Rails

きっかけ

最近のエンジニア分野でのはやりは、「RubyRailsソースコードを読む」である。

なぜかというと、ソースがちゃんと読めれば、本に書いていないことも分かるし、Railsが3.0になったからといって、新しい本を読まずにソースの差分を読めばよい。
Railsは今流れが速いので、いちいち本を買うのも面倒だ。
あとは、本がそもそも出てなかったりするので、その部分を知るため。

簡単にいうと、RubyRailsを抽象度が高いレイヤーで理解することにより、応用力を身につけたいということである。
(簡単じゃないって(笑))

Rails

Railsのソースはgithubで読める。
http://github.com/rails/rails

頭から読むならば actionpack/lib/action_controller/dispatch/dispatcher.rb がおススメということだ。
ただし、ソースコードを読むコツは「目的を具体的にもつこと」、それにより「読まない部分決めること」なので、各自の目的で読めばよいと思う。
ActiveRecord::Base#find を理解しよう」でも構わない。

actionpack/lib/action_controller/dispatch/dispatcher.rb
http://github.com/rails/rails/blob/master/actionpack/lib/action_controller/dispatch/dispatcher.rb

ちなみに自分の目的は、

  • ActiveRecord::Baseの属性のdelegate、#find
  • routes.rbのmap、namespaceの処理(map -> namespece -> namespaceの入れ子は動く。 map -> namespace -> mapの入れ子は動かない)
  • RubyやlamdaやProcなど、高階関数(関数を引数にとる関数)の使いどころがよくわかっていないので、その事例をたくさんみたい。

高階関数については、HaskellScalaLispErlang関数型言語を学べば分かるのだろうけど・・・。

Ruby

ソースコードの場所
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/

Rubyについては「Rubyソースコード完全解説」というドキュメントがあるので、まずはこちらをさらっと読むとよいかもしれない。

YARV Maniacs 【第 1 回】 『Ruby ソースコード完全解説』不完全解説
http://jp.rubyist.net/magazine/?0006-YarvManiacs
現在サーバがBusyのようですが、明日には見えるかな…。

Rubyソースコード完全解説
http://i.loveruby.net/ja/rhg/book/
導入は素晴らしい
http://i.loveruby.net/ja/rhg/book/intro.html

RSpec

RSpecのStubやMockあたりもいまいち分かっていない。

ソースはここ。
http://github.com/dchelimsky/rspec

RSpecやTest Unitが書かれているものは、動作を知るためには、そこから読んでもよいと思う。

では書きなぐりな感じですが、この辺で…。