Предполагая, что я скомпилирую свой собственный новый Ruby (MRI 1.9.3), что такое LOAD_PATH по умолчанию и как это вычисляется?
Как определяется по умолчанию Ruby LOAD_PATH?
Ответ 1
На моей машине начальный путь загрузки выглядит следующим образом:
$ ruby -e 'puts $LOAD_PATH'
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.8.0
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby/1.9.1
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.8.0
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/vendor_ruby
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1
/Users/matt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin10.8.0
Вооруженный grep, исследование источника Ruby приводит к  определению ruby_initial_load_paths[] в version.c (это включено Ruby 1.9.3). Первый из них, который применяется (ни NO_INITIAL_LOAD_PATH, либо RUBY_SEARCH_PATH не установлен), RUBY_SITE_LIB2. Если посмотреть на определения выше этого определения мы видим:
#define RUBY_SITE_LIB2              RUBY_SITE_LIB    "/"RUBY_LIB_VERSION
#define RUBY_SITE_LIB RUBY_LIB_PREFIX"/site_ruby"
Следуя этой цепочке определений, становится ясно, что это соответствует первой записи в моем пути загрузки выше. Аналогично, другие константы, которые входят в эту переменную, соответствуют другим входам пути нагрузки.
Переменная ruby_initial_load_paths[] используется в ruby_init_loadpath_safe() в ruby.c, где для процесса настроен фактический путь загрузки.
Таким образом, ответ на ваш вопрос заключается в том, что начальный путь загрузки устанавливается во время компиляции с некоторыми #define s в соответствии с настройкой сборки.
Ответ 2
Ваша компиляция создает каталог lib на системах, основанных на nix, обычно
/usr/lib/ruby/X.Y.Z
X.Y.Z представляет номер версии вашей версии рубинового C api.