Another Japan in the World

Jun Aruga's blog.

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が書かれているものは、動作を知るためには、そこから読んでもよいと思う。

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