2008-12-29 58 views
2

閱讀示例項目的源代碼,如Beast和Bort,被推薦爲學習rails的好方法。但是我發現自己迷失在閱讀這些項目的源代碼中,導致包含的插件可能會帶來一些奇怪的代碼而沒有任何提示,例如"require""include"。你能分享你的導軌代碼閱讀體驗嗎?很多感謝。如何閱讀Rails示例項目的源代碼?

回答

4

學習使用rails時,需要知道的最重要的事情之一是它如何加載您編寫的代碼。假設你在app/controllers/demo/sub目錄中有一個HelloController。如果您生成此控制器,它將具有Demo :: Sub :: HelloController的正確名稱。

當你的路徑告訴rails尋找「demo/sub/hello」時,它被轉換爲控制器的全名(Demo :: Sub :: HelloController),它們會嘗試調用哪個rails。 Ruby無法找到這個類並調用const_missing,這使得rails將名稱轉換爲文件,在這種情況下,demo/sub/hello_controller(:: = /,除first = _以外的首都,在下劃線方法下查找Inflections)。然後Rails需要這個文件並檢查正確的類定義。

Rails在ruby的加載路徑(app/controllers,app/models,app/helpers,lib,vendor)中添加了幾個目錄,其中任何目錄下的demo/sub/hello_controller.rb都將滿足要求。但不在應用程序/控制器中的控制器需要特別注意那裏的意見。

此外,這適用於名稱空間,只有它會查找一個目錄。因此,引用Demo :: Sub將查找demo/sub目錄。這可以讓你放棄類的標準定義,所以你可以做的

class Demo::Sub::HelloController < ActionController::Base 

end 

代替

module Demo 
    module Sub 
    class HelloController < ActionController::Base 

    end 
    end 
end 
0

Rails代碼主要是ruby代碼。掌握紅寶石,你將沒有任何問題在閱讀欄的代碼。 祝你好運。

+0

是的,我同意。但是,在這個過程中是否有任何軌道魔法發生應該向像我這樣的新手解釋?還是有簡單的方法來確定一個奇怪的方法來自哪裏? – eric2323223 2008-12-29 13:40:56

0
  1. 開發一個簡單的Rails項目,直到你有基本的Rails的東西了。因爲一旦你知道標準的Rails,你將更快地識別插件功能
  2. 由於Rails已經寫入,所以更好地瞭解ruby。例如,有一本名​​爲Ruby for Rails的書,這是一個很好的起點。
  3. 我喜歡看看從上到下的測試(積分,控制器,型號)
+0

看着測試是一個好點,投票:) – eric2323223 2008-12-30 06:41:34