Почему вы включаете A
в B
, а не в Ab
?Это будет работать:
# B.send(:include, A)
Ab.include A
Ваш код не работает, потому что include B
выполняется и в основном все методы из B
добавляются в базу.Можно реализовать обратный вызов self.included
в B
, собрать все классы / модули, которые включены в , и обновить их все, когда include
вызывается для своего собственного класса, но это выглядит как странное излишество.
Sidenote: Module#include
публично.