BasicObject был введен в Ruby 1.9 и является родителем Object (таким образом BasicObject
является родительским классом всех классов в Ruby).
BasicObject
почти не имеет методов:
::new
#!
#!=
#==
#__id__
#__send__
#equal?
#instance_eval
#instance_exec
BasicObject может использоваться для создания иерархий объектов, независимых от
Объектная иерархия Ruby, прокси-объекты, такие как класс Delegator, или
другое использование, где загрязнение пространства имен от методов и классов Руби
следует избегать.
BasicObject не включает ядро (для таких методов, как put) и
BasicObject находится за пределами пространства имен стандартной библиотеки, поэтому
общие классы не будут найдены без использования полного пути к классам.
Объект смешивается в модуле Kernel, делая встроенное ядро
функции доступны во всем мире. Хотя методы экземпляра объекта
определяются модулем ядра ...
Вы можете использовать BasicObject
в качестве родителя вашего объекта в случае, если вам не нужны методы Object
, и вы бы определили их иначе:
# when you inherit Object
class Tracer
instance_methods.each do |m|
next if [:__id__, :__send__].include? m
undef_method m
end
# some logic
end
# when you inherit BasicObject
class Tracer < BasicObject
# some logic
end