ruby.exe提供了一個參數-r, 允許ruby在允許之前加載你指定的庫
1 如果你安裝了gem,那么環境變量RUBYOPT將為-rubygems,這個參數說明了ruby將提前加載ubygem.rb(注意,沒有r,不是rubygem.rb,而是ubygem:)
2 這時,如果你運行 ruby -e "puts $:",可以查看到ruby查詢lib庫的目錄順序,其中第一個就是類似"..\ruby\site_ruby\1.8"目錄
3 因此,ubygem.rb將在ruby\site_ruby\1.8\ubygems.rb位置中被ruby定位到,而ubygem.rb只有一句話require 'rubygems',這次才真正調用了rubygems.rb
4 接著rubygems.rb的最后一句require 'rubygems/custom_require'將加載custom_require.rb
5 最后custom_require.rb中替換了原先的require()函數的實現,這之后,庫的加載,將遵循gem的目錄約定。