2012-05-31 11 views

risposta

13

Sulla mia macchina, il percorso di carico iniziale si presenta così:

$ 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 

Armati di grep, un'indagine sulla fonte Rubino porta alla definition of ruby_initial_load_paths[] in version.c (questo è su Ruby 1.9.3). Il primo di questi che si applica (né NO_INITIAL_LOAD_PATH o RUBY_SEARCH_PATH sono stati impostati) è RUBY_SITE_LIB2. Guardando le suddette define questa definizione we see:

#define RUBY_SITE_LIB2    RUBY_SITE_LIB "/"RUBY_LIB_VERSION 

e in turn:

#define RUBY_SITE_LIB RUBY_LIB_PREFIX"/site_ruby" 

Seguendo questa catena di definisce, diventa chiaro che questo corrisponde alla prima voce nel mio percorso di carico sopra. Allo stesso modo le altre costanti che entrano in questa variabile corrispondono alle altre voci del percorso di carico.

La variabile ruby_initial_load_paths[] viene utilizzata in ruby_init_loadpath_safe() in ruby.c, dove viene impostato il percorso di carico effettivo per il processo.

Quindi la risposta alla tua domanda è che il percorso di caricamento iniziale è impostato in fase di compilazione con alcuni #define s, in base a come è stata configurata la build.

0

vostra compilation creare una directory lib su sistemi basati nix * è generalmente

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

X.Y.Z rappresenta il numero di versione del rubino versione C api.

+0

No, il numero di versione rappresenta la versione dell'AP Ruby C –

Problemi correlati