这个问题直接关系到这个。但我试图将其分解为基本问题,我不想在另一个问题框中输入更多文本。所以这里是:
我知道我可以通过扩展模块 ClassMethods 并通过 Module#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
当我启动脚本时,我并没有Extended Bar!
像我期望的那样,而是Base Bar!
. 为了正常工作,我需要改变什么?