Вы можете удалить метод двумя простыми способами.Drastic
Module#undef_method( )
удаляет все методы, включая унаследованные.Киндер
Module#remove_method( )
удаляет метод из получателя, но оставляет только унаследованные методы.
См. Ниже 2 простых примера -
Пример 1 с использованием undef_method
class A
def x
puts "x from A class"
end
end
class B < A
def x
puts "x from B Class"
end
undef_method :x
end
obj = B.new
obj.x
result - main.rb: 15: in
': undefined method
x 'для # (NoMethodError)
Пример 2 с использованием remove_method
class A
def x
puts "x from A class"
end
end
class B < A
def x
puts "x from B Class"
end
remove_method :x
end
obj = B.new
obj.x
Результат - $ ruby main.rb
x из класса A