Как писал @Jeremy, константы имеют пространство имен с помощью модулей, и определение класса - это просто присвоение объекта класса константе.По существу,
class Fixnum; end
(приблизительно) эквивалентно
Fixnum = Class.new
(за исключением того факта, что если Fixnum
уже существует, первый откроет его, а второй перезапишетэто).
Это означает, что если вы сделаете это внутри модуля (или класса, поскольку модуль класса IS-A), то константа Fixnum
будет находиться в пространстве имен внутри этого модуля.
Если вы хотите явно получить доступ к константе верхнего уровня, вы можете указать Ruby запустить его поиск на верхнем уровне очень похоже на то, как вы говорите Unix запустить поиск файловой системы на верхнем уровне:
module XT
class ::Fixnum; end
end