如果你已經打算閱讀 rails 源代碼了,你一定已經安裝好 ruby 和 rails 了,可能和我一樣你也是用 rvm 來安裝和管理 ruby 版本的。
必要的 ruby 語言知識
除了掌握基本的 ruby 語言外,還需要掌握基本的元編程知識,讀過<ruby 元編程>最好,但這不是必須的,你需要熟悉下面這些方法:
- 類方法的定義,用這種方法的好處是比較集中,方便閱讀,你也可以少敲很多 self
class << self
def foo
# method body
end
end
- 幾個重要的方法
class_eval
instance_eval
method_missing
extend
extended
included
inherited
可能還有其他方法,我一時想不起來了,或者我還沒有遇到,畢竟我也才開始閱讀 rails 源碼。遇到不清楚的查 ruby 庫文檔就可以了。
我們要讀的代碼
首先要分清楚這么幾個概念:rails 包源代碼、rails 源代碼、rails 應用代碼,我們主要讀的是后兩個。
-
rails 包源代碼
rails gem 的開發包,是從 github 上直接git clone
下來的代碼,可以隨便看看,但不是我們將要閱讀的目標。 -
rails 源代碼
這是我們將要閱讀的代碼,通過gem install rails
安裝后,rails源代碼及其依賴的 gem 源代碼都保存在 gem 的安裝目錄里,它的目錄代碼和開發包是很不一樣的。 -
rails 應用代碼
當我們運行了rails new foo
之后,rails 生成的 app 框架,應用的邏輯代碼。
rails 安裝目錄
通過運行 gem environment gemdir rails
可以查看 rails 的安裝目錄,在我的機器上是 ~/.rvm/gems/ruby-2.4.0/gems/ 。你可以用一個你趁手的編輯器打開它,vim 是一個很好的選擇。