Внутри тела определения class
, self
относится к самому классу.Module#name
сообщит вам имя класса / модуля, но только если он действительно есть.(В Ruby не существует такой вещи, как «имя класса». Классы - это просто объекты, как и любые другие, которые присваиваются переменным, как и любой другой. Просто если вам случится присвоить объект класса постоянной, тометод name
вернет имя этой константы.)
Пример:
puts class Foo
name
end
# Foo
Но:
bar = Class.new
bar.name # => nil
BAR = bar
bar.name #=> 'BAR'