Этот вопрос напрямую связан с этим. Но я попытался разбить его на базовую проблему, и я не хотел вводить еще больше текста в другой вопрос. Итак, вот:
Я знаю, что я могу включить classmethods, расширив модуль ClassMethods и включив его через hook # include. Но могу ли я сделать то же самое с prepend? Вот мой пример:
класс Foo:
class Foo
def self.bar
'Base Bar!'
end
end
Расширения класса :
module Extensions
module ClassMethods
def bar
'Extended Bar!'
end
end
def self.prepended(base)
base.extend(ClassMethods)
end
end
# prepend the extension
Foo.send(:prepend, Extensions)
класс FooE:
require './Foo'
class FooE < Foo
end
и простой начальный скрипт:
require 'pry'
require './FooE'
require './Extensions'
puts FooE.bar
Когда я запускаю script, я не получаю Extended Bar!
, как я ожидаю, но скорее Base Bar!
. Что мне нужно изменить для правильной работы?