Добавить inherited
хук к BasicObject
:
class BasicObject
def self.inherited(subclass)
puts "fifi"
end
end
Чтобы не допустить путаницы других хуков, вместо переопределения вы можете добавить модуль, который печатает и вызывает super, чтобы вызвать ужезарегистрированное поведение:
module Hook
def inherited(subclass)
puts "fifi"
super
end
end
BasicObject.singleton_class.prepend(Hook)
Затем:
irb> class Foo; end
fifi
=> nil
Либо добавьте хук к Object
.Для Foo
выше неявный суперкласс равен Object
.Но BasicObject
является суперклассом Object
.Добавление ловушки к BasicObject
также будет печатать для классов, которые указывают BasicObject
как суперкласс.