Suponiendo que compilo mi propio Ruby fresco (MRI 1.9.3), ¿cuál es el LOAD_PATH predeterminado, y cómo se calcula?¿Cómo se determina Ruby LOAD_PATH predeterminado?
Respuesta
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.
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í.
- 1. Agregando un directorio a $ LOAD_PATH (Ruby)
- 2. Agregar $ LOAD_PATH externamente
- 3. Ruby: agregando un directorio a $ LOAD_PATH - ¿qué hace?
- 4. ¿Cómo se determina el tamaño del proceso?
- 5. ¿Cómo se determina una SoapAction válida?
- 6. ¿Cómo se determina si CKEditor está cargado?
- 7. ¿Cómo se determina quién emitió la señal?
- 8. cómo configurar ruby predeterminado con rvm
- 9. C# HttpWebRequest - ¿Cómo se determina si se realizó HTTP 301?
- 10. ¿Cómo se determina el valor de un bloque begin?
- 11. Android Multitouch - ¿Determina qué dedo se levantó?
- 12. ¿Cómo se determina que PlotRange incluye todos los gráficos?
- 13. ¿Cómo se determina la clase de un tipo genérico?
- 14. ¿Cómo se determina la longitud de una cadena gráfica?
- 15. ¿Cómo se determina si dos nodos están conectados?
- 16. ¿Cómo se determina la antigüedad del archivo con PHP?
- 17. ¿Cómo se determina cuando Windows termina de reiniciar?
- 18. PHP: ¿Cómo se determina cada enésima iteración de un ciclo?
- 19. ¿Cómo se determina qué significa bash ls colors?
- 20. ¿Cómo se determina la velocidad de un dispositivo Android?
- 21. ¿Cómo se determina la longitud de una trama Ethernet II?
- 22. ¿Cómo se determina el orden de ejecución de HttpModules?
- 23. ¿Cómo se determina el hardware necesario para un servidor?
- 24. ¿Cómo se determina si una lista bidimensional contiene un valor?
- 25. ¿Cómo se determina qué tan grande es el objeto Request.Form?
- 26. ¿Cómo se determina el espacio de nombre de una función?
- 27. ¿Cómo se determina la altura de la cadena en PostScript?
- 28. ¿Cómo se determina el tamaño/marco de un UINavigationItem.titleView personalizado?
- 29. ¿Cómo se determina qué componente está siendo utilizado por matplotlib?
- 30. ¿Cómo se determina si la referencia del objeto es nula?
No, no, el número de versión allí representa la versión de Ruby C API –