Вы не можете действительно отменить что-то. В этом конкретном случае вы можете повторно импортировать его, но это может иметь и другие побочные эффекты.
Вероятно, для «Родителя» лучше сохранить оригинал, потому что может потребоваться его вызов:
module GrandParent
def just_do
puts "GrandParent"
end
end
module Parent
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
include GrandParent
# Creates an alias to the original method
alias_method :grandpa_just_do, :just_do
def just_do
puts "Parent"
end
end
end
class Me
include Parent
def self.just_do
# Call using the alias created previously
grandpa_just_do
end
end
Me.just_do