Этот вопрос довольно интересен, потому что он по существу спрашивает: "Есть ли способ, чтобы метакласс ссылался на свой" настоящий "класс?
И, насколько я могу судить, ответ «нет», потому что все «восходящие» указатели предков, которые Ruby хранит, также указывают на метаклассы, и поэтому запуск class_variables()
в одном из них скажет вам о его переменные экземпляра класса . Итак, вы должны ссылаться на объекты по имени или просто устанавливать дескриптор перед входом в контекст метакласса ...
class Foo
@@default = "default"
@@me = self
p instance_variables
p class_variables
class << self
p instance_variables
p @@me.class_variables
end
end