Есть некоторые ошибки, о которых нужно знать:
В самом классе HideSingleton все еще есть несколько методов (из Object и Module), и эти методы будут вызываться в HideSingleton, а не в SingletonClass.Например, если у нас были разные константы в таких классах, как это:
class SingletonClass < BaseClass
SingletonConst = :foo
end
class HideSingleton
HideConst = :bar
end
Тогда вызов констант метода класса для обоих классов приводит к:
SingletonClass.constants
#=> [:SingletonConst]
HideSingleton.constants
#=> [:HideConst]
То же самое верно для любогостандартных методов (const_get, class_eval, dup, response_to? и т. д.).Чтобы избежать этого, вам необходимо выгрузить методы в HideSingleton, которые вы хотите передать в SingletonClass (или явно переслать их).