Supponendo che compili il mio nuovo Ruby (MRI 1.9.3), qual è il LOAD_PATH predefinito, e come viene calcolato?Come viene determinato il Ruby LOAD_PATH predefinito?
risposta
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.
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.
- 1. Aggiunta di una directory a $ LOAD_PATH (Ruby)
- 2. Come viene determinato il jitter in ggplot?
- 3. Come viene determinato il fondo della pila?
- 4. Add $ LOAD_PATH esternamente
- 5. Perché Ruby 1.9.2 rimuove "." da LOAD_PATH e qual è l'alternativa?
- 6. gulp-sass funziona per il supporto load_path?
- 7. Come viene determinato locale in ToLocalTime()
- 8. Come viene determinato il tipo di componente per l'array varargs?
- 9. Da dove viene il valore predefinito mb_internal_encoding()?
- 10. come impostare il valore predefinito ruby con rvm
- 11. Vagrant usando Ruby 1.9.3 come predefinito
- 12. come impostare un 'inserimento' predefinito su un determinato pulsante
- 13. Come faccio a rendere Ruby 1.9 il Ruby predefinito su Ubuntu?
- 14. Come viene implementato il ruby on rails has_many (e simili)?
- 15. Migrazioni basate su codice EntityFramework, come viene determinato l'ordine?
- 16. Ruby on Rails - Rendi sottile il modello predefinito
- 17. Impostare il gestore opzioni predefinito per OptionParser di ruby
- 18. Oggetto ruby viene stampato come puntatore
- 19. Come salvare il file Xlsxwriter in un determinato percorso?
- 20. Da dove viene il browser predefinito su Android 4?
- 21. Come rendere JRuby 1.6 predefinito su Ruby 1.9?
- 22. Da dove viene il fuso orario predefinito di Android?
- 23. Qual è il valore predefinito per un campo se non viene fornito un valore predefinito?
- 24. ruby get Time in un determinato fuso orario
- 25. Set UTF-8 come predefinito per Ruby 1.9.3
- 26. Come viene determinato il puntatore dello stack di un'attività del kernel Linux per ogni thread?
- 27. Spring MVC Upload File - Come viene determinato il tipo di contenuto?
- 28. Come viene determinato il percorso di ricerca del modulo Python su Mac OS X?
- 29. Come eliminare il costruttore predefinito?
- 30. Come impostare il repository predefinito
No, il numero di versione rappresenta la versione dell'AP Ruby C –