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的目录约定。