? ? 在Rails3.0中,Rails::Application對象是一個Rails引擎,但是,Rails::Application對象還承擔了協(xié)調整個應用啟動流程的責任。
? ? 這個是application.rb源代碼地址。
? ? ?首先,我們可以看到Application是Engine的子類,因而Application類繼承了Engine的所有功能。
? ? ?接下來,Application類用autoload方法加載了一系列啟動過程中需要用到的文件。這個后面會說到。
? ? ?再下來,我們來到Application類的類方法定義中。
? ? ? ? ? ? 1.inherited方法中,繼承了engine中相應的方法、將正在開發(fā)的應用名稱的值賦給Rails.app_class、將正在開發(fā)的應用中的lib文件路徑添加到全局路徑變量中。
? ? ? ? ? ? ? ?這里有一個find_root(base.called_from)的方法調用,其中,base.called_from的定義在engine.rb這個文件里,這個方法調用最終返回我們正在開發(fā)的rails項目的根目錄。