method_added
в Module
.
Я на самом деле имел в виду included
, а не extended
, но оба они также в Module
.
Механизм будет вращаться вокругделая что-то вроде этого:
module Foo
def self.included(base)
base.extend(FooMethods)
end
module FooMethods
def bar
# Whatever
end
end
end
Внутри Foo.included
вы можете определить, основываясь на произвольных критериях, следует ли добавлять рассматриваемые методы в base
(объект, включающий модуль).
В вашем случае вы можете проверить, был ли включен модуль с более высоким приоритетом, или посмотреть, является ли модуль модулем с более высоким приоритетом.Исходя из этого, вы решите, добавлять методы или нет.