我正在创建一个图形库gem。
创建gem时,确保与其他gem或其他代码没有冲突是很重要的。
例如,扩展(monkeypatch)方法是从我的gem代码中调用的。
class Array
def sum
inject(0.0) { |result, el| result + el }
end
所以,解决方案似乎是一个模块。
如何创建模块并确保在下载和使用gem时与其他代码没有冲突?
答案 0 :(得分:3)
你就是这样做的。创建一个模块,然后使用它:
module MyLibrary
class MyGraphicsClass
# ...
end
end
这在没有办法有助于防止你的猴子补丁踩到别人的脚趾上。没有办法阻止您对Array的修改可能会破坏其他人的代码。解决方案是不这样做。修补标准库的基本部分是一种可怕的做法,并且是确保没有人想触摸你的宝石的好方法。