Ruby 如何为gem创建模块?
我正在创建一个图形库gem 在创建gem时,确保与其他gem或其他代码没有冲突似乎很重要 例如,从我的gem代码中调用扩展(monkeypatch)方法Ruby 如何为gem创建模块?,ruby,module,rubygems,monkeypatching,Ruby,Module,Rubygems,Monkeypatching,我正在创建一个图形库gem 在创建gem时,确保与其他gem或其他代码没有冲突似乎很重要 例如,从我的gem代码中调用扩展(monkeypatch)方法 class Array def sum inject(0.0) { |result, el| result + el } end 因此,解决方案似乎是一个模块 如何创建一个模块并确保在其他人下载和使用gem时与其他代码没有冲突?您只需这样做。创建一个模块,并使用它: module MyLibrary class MyG
class Array
def sum
inject(0.0) { |result, el| result + el }
end
因此,解决方案似乎是一个模块
如何创建一个模块并确保在其他人下载和使用gem时与其他代码没有冲突?您只需这样做。创建一个模块,并使用它:
module MyLibrary
class MyGraphicsClass
# ...
end
end
这并不能阻止你的猴子补丁踩到别人的脚趾。无法防止您对数组的修改可能会破坏其他人的代码。解决办法是不要这样做。修补标准库的基本部分是一种可怕的做法,也是确保没有人想碰你的宝石的好方法。如果你只是想将模块混入核心类,那么创建一个模块对你没有帮助。您应该避免修补核心类。好的,那么实现Array#sum功能的更好方法是什么呢?子类Array并使用您的子类。但是,我假设您所做的事情比#sum更复杂,因为这只是
arr.reduce(:+)
。