load
o el require
self
es main
tal como
ocurre cuando el intérprete Ruby comienza la ejecución.
load
o require
no propaga el objeto receptor
al fichero cargado.
load
se le pasa un segundo argumento que sea distinto de nil
y false
entonces carga el fichero especificado en un módulo anónimo. De esta forma el fichero cargado
no puede afectar al espacio de nombres global. Todas las constantes, clases, módulos que define
quedan atrapados dentro del módulo anónimo. Sin embargo puede establecer variables globales que quedan visibles
en el código que lo carga.
[~/srcLPP/Chapter7ClassesAndModules/modules]$ cat -n wrapped_module.rb 1 # Modules do not change the names of instance variables 2 # or private methods 3 module Space 4 class Chazam 5 def tutu 6 "inside tutu" 7 end 8 end 9 end 10 $Space = Space
[~/srcLPP/Chapter7ClassesAndModules/modules]$ cat -n wrapped_loads.rb 1 load 'wrapped_module.rb', true 2 puts $Space.inspect 3 4 q = $Space :: Chazam.new # :: is an operator! 5 puts q.tutu
#<Module:0x007fd9c284e790>::Space inside tutu [~/srcLPP/Chapter7ClassesAndModules/modules]$
Casiano Rodriguez León 2015-01-07