Subsecciones

Ejecutando Código Cargado

Envolviendo una Carga

Si al método 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-06-18