Il ::è l'operatore di risoluzione dell'ambito. Ciò che fa è determinare in quale ambito è possibile trovare un modulo. Per esempio:
module Music
module Record
end
module EightTrack
end
end
module Record
end
Per accedere Music::Recorddall'esterno Musicuseresti Music::Record.
Per fare riferimento Music::Recordda Music::EightTrackpuoi semplicemente usare Recordperché è definito nello stesso ambito (quello di Music).
Tuttavia, per accedere al Recordmodulo responsabile dell'interfacciamento con il tuo database Music::EightTracknon puoi usarlo semplicemente Recordperché Ruby pensa che tu lo voglia Music::Record. Questo è quando si usa l'operatore di risoluzione dell'ambito come prefisso, specificando la portata globale / main: ::Record.