Angenommen, ich kompiliere meinen eigenen frischen Ruby (MRI 1.9.3), was ist der Standard LOAD_PATH, und wie wird das berechnet?Wie wird der Standard-Ruby LOAD_PATH ermittelt?
Antwort
Auf meinem Rechner die anfängliche Lastpfad sieht wie folgt aus:
$ 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
Bewaffnet mit grep
, eine Untersuchung der Quelle Rubin führt zur definition of ruby_initial_load_paths[]
in version.c
(dies ist Ruby 1.9.3). Die ersten von diesen gelten (NO_INITIAL_LOAD_PATH
oder RUBY_SEARCH_PATH
wurden eingestellt) ist RUBY_SITE_LIB2
. Mit Blick auf die oben definiert dieser Definition we see:
#define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
und in turn:
#define RUBY_SITE_LIB RUBY_LIB_PREFIX"/site_ruby"
Im Anschluss an diese Kette definiert, wird klar, dass dies in meinem Lastpfad oben auf den ersten Eintrag entspricht. In ähnlicher Weise entsprechen die anderen Konstanten, die in diese Variable eingehen, den anderen Ladepfadeinträgen.
Die Variable ruby_initial_load_paths[]
wird in ruby_init_loadpath_safe()
in ruby.c
verwendet, wobei der tatsächliche Lastpfad für den Prozess eingerichtet ist.
Die Antwort auf Ihre Frage ist also, dass der initiale Ladepfad zur Kompilierungszeit mit einigen #define
s gesetzt wird, je nachdem, wie der Build konfiguriert wurde.
Ihre Zusammenstellung eines lib auf * nichts-basierten Systemen schafft es
/usr/lib/ruby/X.Y.Z
X.Y.Z stellt Versionsnummer Ihres Rubin C api Version im Allgemeinen ist.
- 1. Wie wird der USB-Host-Gerätetyp ermittelt?
- 2. Wie wird der Jitter in ggplot ermittelt?
- 3. Rubygem Executable $ LOAD_PATH Probleme
- 4. Wie wird die ständige Erreichbarkeit ermittelt?
- 5. Wie wird der richtige Ort beim ersten Service ermittelt?
- 6. Wie ermittelt man, welche Spalte aktualisiert wird?
- 7. Wie wird eine leere Zeile ermittelt?
- 8. Wie wird die Version von Gradle ermittelt?
- 9. Wie ermittelt Linq Wertänderungen?
- 10. Wie ermittelt Android den Status der Internetverbindung?
- 11. gulp-sass arbeiten für load_path Unterstützung?
- 12. Wie wird der Pfad und der Name der gemeinsam genutzten Python-Bibliothek ermittelt?
- 13. Wie wird die Größe eines zugewiesenen C-Puffers ermittelt?
- 14. Wie wird die Gesamtgröße des ASP.Net-Cache ermittelt?
- 15. Wie wird die Größe eines C-artigen Arrays zuverlässig ermittelt?
- 16. [Java] Wie ermittelt man, ob eine Datei verwendet wird?
- 17. Android: Wie wird der Zeichenindex der Position eines Berührungsereignisses in TextView ermittelt?
- 18. C# Wie wird der Wert ermittelt, der innerhalb des Objekts eingeschlossen ist, ist Null oder Standard?
- 19. jQuery UI Sortierbar, wie wird der aktuelle Standort und der neue Speicherort im Update-Ereignis ermittelt?
- 20. Wie ermittelt man den Farbton?
- 21. Wie ermittelt WiX die Dateiversion?
- 22. Wie UID einer App bei der Installation in Android ermittelt?
- 23. Wie kann der Standarddrucker mithilfe von WPF ermittelt werden?
- 24. Wie ermittelt Google den Hash für Suchbegriffe?
- 25. Wie werden Ressourcenbezeichnerwerte in Android ermittelt?
- 26. Wie wird der primäre Netzwerkadapter in den Ergebnissen von PdhExpandWildCardPath ermittelt?
- 27. Wie wird die Größe der ASP.NET-Sitzung ermittelt, wenn nicht serialisierbare Objekte darin enthalten sind?
- 28. Wie wird der Stapelzeiger eines Linux-Kernel-Tasks für jeden Thread ermittelt?
- 29. Wie ermittelt man ORACLE_HOME aus PL/SQL?
- 30. Dateierstellungsdatum ermittelt in Java
Nein, die Versionsnummer steht für die Ruby C API-Version –