O ::é o operador de resolução do escopo. O que ele faz é determinar em que escopo um módulo pode ser encontrado. Por exemplo:
module Music
module Record
# perhaps a copy of Abbey Road by The Beatles?
end
module EightTrack
# like Gloria Gaynor, they will survive!
end
end
module Record
# for adding an item to the database
end
Para acessar Music::Recordde fora de Musicvocê usaria Music::Record.
Para fazer referência a Music::Recordpartir de Music::EightTrackvocê pode simplesmente usar Recordporque está definido no mesmo escopo (o de Music).
Porém, para acessar o Recordmódulo responsável pela interface com seu banco de dados Music::EightTrackvocê não pode simplesmente usar Recordporque Ruby acha que você quer Music::Record. Isso é quando você usar o operador de resolução de escopo como um prefixo, especificando o escopo global / main: ::Record.