2012-05-31 6 views

Respuesta

13

En mi máquina, la trayectoria de la carga inicial tiene el siguiente aspecto:

$ 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 

Armado con grep, una investigación sobre la fuente de Ruby conduce a la definition of ruby_initial_load_paths[] in version.c (esto es sobre el Ruby 1.9.3). El primero de ellos que se aplica (ni NO_INITIAL_LOAD_PATH ni RUBY_SEARCH_PATH se han establecido) es RUBY_SITE_LIB2. En cuanto a las define anteriormente que la definición we see:

#define RUBY_SITE_LIB2    RUBY_SITE_LIB "/"RUBY_LIB_VERSION 

y in turn:

#define RUBY_SITE_LIB RUBY_LIB_PREFIX"/site_ruby" 

Siguiendo esta cadena de define, se hace evidente que esto corresponde a la primera entrada en mi camino de carga superior. De manera similar, las otras constantes que entran en esta variable corresponden a las otras entradas de ruta de carga.

La variable ruby_initial_load_paths[] se utiliza en ruby_init_loadpath_safe() in ruby.c, donde la ruta de carga real está configurada para el proceso.

Así que la respuesta a su pregunta es que la ruta de carga inicial se establece en tiempo de compilación con algunos #define s, según cómo se haya configurado la compilación.

0

Su compilación crear un directorio lib en sistemas * nix basado generalmente es

/usr/lib/ruby/X.Y.Z 

x.y.z representa el número de versión de la versión de la API C de rubí.

+0

No, no, el número de versión allí representa la versión de Ruby C API –

Cuestiones relacionadas