假设"干净"的Ruby monkey补丁不是一个选项,并且所有的gem扩展方法都需要完全包含在自己的命名空间中,并给定类似的结构
module ARubyGem
class GemClassOne
def method1
# instance method to be available when calling extended module
end
def self.method2
# singleton method to also be available in extended module
end
end
end
那么,如果原始gem代码有一些以"self"开头的singleton方法,那么以下哪种方法是扩展gem的更好方法呢?
module ARubyGemExtension
class GemClassOneExtension < ARubyGem::GemClassOne
def method_to_override
# new code here
end
end
end
与。
module ARubyGemExtension
include ARubyGem
class GemClassOneExtension
def method_to_override
# new code here
end
end
end
似乎您需要使用:
module ARubyGemExtension
class GemClassOneExtension < ARubyGem::GemClassOne
def method_to_override
# new code here
end
end
end
(记住命名GemClassOne
。)
我对您正在使用的gem一无所知,但除非它是专门为通过include
提供方法而设置的,否则我认为您可能无法获得所需的东西。