怎麼樣更好地理解 Rails 的源碼?

感覺很多rails的開源項目都不像傳統項目那邊有完善的文檔,可以通過文檔去了解整個系統的總體架構再去源碼那細看實現,現在直接跑到github看源碼不知從何入手,不知各位前輩有什麼建議?


1,基礎,先讀通Programming Ruby 1.9

2,測試,先讀懂所有的spec或test

3,最小化和模塊化,想像你如果寫這個功能如何做,先還原最基本的功能,然後一步步擴展


step 1: 懂Ruby語法基礎: 數據類型, class, module, block,proc等

step 2: 理解Rails MVC, Rails各個模塊, 項目結構目錄。

step 3 : 開始看項目源碼。

Github上多是gem,plugin. 你需要了解如何寫一個gem, plugin。 如果是Rails3的gem, 應該了解什麼是Rails Engine,以及相關的東西。

看不懂源碼,最關鍵的是因為你step1和step2沒掌握, 這個別人幫不了你。


先說個小細節,題主問的是「Rails 的源碼」,而內容里說的卻是「rails的開源項目」。

我對 Rails 源代碼還算熟悉,就只回答這部分吧。

首先,你要懂 Ruby 語法,了解 Ruby 元編程;然後是 rails new project 生成的項目的文件、目錄結構要有所了解,對 MVC 要有所了解。

然後,就是知道 Rails 由哪幾個大的組件組成,各個組件主要負責做什麼事。

最後,就是看代碼、做筆記。這裡我覺得可以慢慢來 Action Mailer, Abstract Controller, Action Controller,Action Dispatch,Action View,Active Model,Active Record,Active Job,Active Support,Railtie,Generators 等。

關鍵是:

多看、多做、多想和堅持。

多看 - 可以多看看其他人的博客,看看每一個 Release note,看看官方 Guides;下載其他人的開源項目源代碼,看某個功能是如何實現的。

多做 - 可以將一個項目里的某個功能「移植」到另一個項目里,可以參與開源項目,可以寫技術博客或參與線下分享。

堅持 - 閱讀源代碼,其實有時候覺得挺枯燥的。還有不少地方前面幾次閱讀都想不通,只能靠猜,然後逐步驗證。

(以上純粹個人意見哈~~)

怎樣才能全面、系統的了解,然後使用 Rails ?之前我也有這疑問(當然,現在仍然存在),我嘗試著按照自己的思路去回答自己,並編寫、整理成了一本書。

自己使用 Rails 已經有幾年時間了,我一直想對它有個全面、系統的了解。所以編寫、整理了這本書,供自己學習和使用,盡量做到全面、系統,有講概念,有講原理。

如果你有興趣,準備閱讀 Rails 源代碼。可以到 Rails 4-2-stable 參考手冊(Beta) 看看,我相信能幫到你。


rails的Api一直在變,想學好rails最好了解rails是從哪幾個模式架構起來。

action_record模式 = &> activerecord

front controller形式 = &> active dispatch

InterceptingFilter = &> activecontroller filter

activeview

rails configurator

強烈建議了解了這些模式後,自己嘗試用這個模式來實現一個mini_rails。

掌握了這些神,再去學習形


我的經驗,系統學好rails,學習過程中,多看rails源碼,把一些流程看清楚。然後再去讀github里的源碼,遇到沒用過的gem,先看下這個gem的文檔,然後再看具體的項目中使用它的代碼,這樣就會知其然知其所以然。


1,安裝一個實例,試用一下功能。

2,在安裝過程中會理解到安裝要求的環境等。

3,再根據功能模塊理解代碼結構。


rails項目文檔還是挺全面的,2.0以後文檔質量有了不小的提升。

建議先搞清楚各模塊的功能、結構和關係,然後從粗到細,逐個模塊慢慢看。


項目開發中去了解吧。

特別是拋異常的時候,可以深入Rails去學習代碼


推薦閱讀:

Ruby - 紅寶石奧義
想快速了解 Rails 3,有什麼值得推薦的好書?
女,26歲,做了一年多的自動化測試,最近在糾結要不要轉行,求指點。?
關於完全聽不懂 Ruby 元編程在說什麼的事(零)
如何快速學習 Ruby on Rails?

TAG:Ruby | RubyonRails | 源碼閱讀 |