::Kernel.send(name,*args, &blk)
вызывает метод name
для класса Kernel
с аргументами args
и блоком &blk
.
При запуске my.is_a? My
name
равен :is_a?
*args
равно My
, а &blk
равно nil
.Вы действительно используете Kernel.is_a? My
.
Вместо этого, если вы хотите переопределить is_a?
для BasicObject
, вы можете пройтись по классу ancestors
...
def is_a?(target)
# I don't know how to get the current class from an instance
# that isn't an Object, so I'm hard coding the class instead.
return ::My.ancestors.include?(target)
end