Read source code of Ruby and Ruby on Rails
きっかけ
最近のエンジニア分野でのはやりは、「Ruby、Railsのソースコードを読む」である。
なぜかというと、ソースがちゃんと読めれば、本に書いていないことも分かるし、Railsが3.0になったからといって、新しい本を読まずにソースの差分を読めばよい。
Railsは今流れが速いので、いちいち本を買うのも面倒だ。
あとは、本がそもそも出てなかったりするので、その部分を知るため。
簡単にいうと、RubyやRailsを抽象度が高いレイヤーで理解することにより、応用力を身につけたいということである。
(簡単じゃないって(笑))
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など、高階関数(関数を引数にとる関数)の使いどころがよくわかっていないので、その事例をたくさんみたい。
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が書かれているものは、動作を知るためには、そこから読んでもよいと思う。
では書きなぐりな感じですが、この辺で…。