El ::es el operador de resolución de alcance. Lo que hace es determinar en qué ámbito se puede encontrar un módulo. Por ejemplo:
module Music
module Record
end
module EightTrack
end
end
module Record
end
Para acceder Music::Recorddesde fuera de Musicusted, usaría Music::Record.
Para hacer referencia Music::Recorda Music::EightTrack, simplemente podría usar Recordporque está definido en el mismo alcance (el de Music).
Sin embargo, para acceder al Recordmódulo responsable de la interfaz con su base de datos, Music::EightTrackno puede usarlo simplemente Recordporque Ruby cree que lo desea Music::Record. Fue entonces cuando se usaría el operador de resolución de alcance como prefijo, especificando el alcance mundial / principal: ::Record.