Refinements仅修改类,而不是模块,因此参数必须是类。
为什么会这样?
可以对模块进行猴子补丁:
module MyModule
def my_method
"hello"
end
end
include MyModule
puts my_method # => hello
module MyModule
def my_method
"goodbye"
end
end
puts my_method # => goodbye
我确定这不是一个好主意,但如果你能限制这种猴子补丁的范围,那么它可能不会那么糟糕。那么为什么你不能呢?