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