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