rails類的裝載程式
在純ruby中,乙個指令碼檔案不需要用特殊的方式命名去匹配他的內容。然而,在rails中,你必須注意,總是在ruby件名和檔案所包含的類有個很直接的關聯。rails充分利用ruby所提供的無效常量**機制。當rails在**偶爾遇到乙個未定義的常量,它使用乙個基於檔案命名協定的類載入器例程來尋找來載入所需的ruby指令碼。
類載入器怎樣知道去哪搜尋?我們已經在本章稍早討論initializer.rb的啟動過程規則的時就覆蓋說明它 。rails有裝載路徑這概念,預設裝載路徑包括基本目錄(你認為在你的程式會增加**的任何地方)。預設的裝載路徑的方法命令會顯示rails在他的預設路徑怎樣搜尋目錄。我們將剖析這個方法的源**並且解釋每個載入行為的原因。
test/mocks目錄(在第17章」testing」會廣泛的涉及到)可以使你去忽略標準rails類行為。
paths = ["#/test/mocks/#"]
# then components subdirectories.
paths.concat(dir["#/components/[_a-z]*」])
# followed by the standard includes.
paths.concat %w(
components
config
libvendor
).map /#」 }.select
paths.concat dir["#/vendor/plugins/*/lib/"]
paths.concat builtin_directories
end想要看你的專案裝載路徑?只要在控制台如下輸入$: :
$ console
loading development environment.
>> $:
程式裝載(程式執行)
程式裝載時,將程式使用的虛擬記憶體位址和計算機實際分配的物理記憶體位址做了對映。程式裝載時獲取了一段連續空間,關閉該程式時,該程式雖然釋放了占用的記憶體空間,但是該記憶體空間並不一定與空餘記憶體空間連續,故其他程式申請時可能無法申請到該記憶體空間。如圖一。有一種解決辦法是記憶體交換,將程式放到硬碟中...
Java類裝載過程
包括load 裝載 link 鏈結 initializing 初始化 鏈結過程包括驗證,準備,解析 class.forname string classname 使用裝載當前類的類裝載器來裝載指定類。class.forname string classname 方法內部呼叫了class.fornam...
程式鏈結與裝載
程式的執行需要執行環境支撐,其執行環境一般由記憶體 執行庫和系統呼叫構成。其中系統呼叫部分程度上充當的是程式與核心進行互動的中介。其中首先需明白,程式與記憶體關係。記憶體是承載程式執行的介質,也是程式進行各種運算和表達的場所。window在預設情況下會將高位址的 2g 空間分配給核心 4g記憶體情況...