如何为gem创建模块?

时间:2012-10-28 21:55:28

标签: ruby module rubygems monkeypatching

我正在创建一个图形库gem。

创建gem时,确保与其他gem或其他代码没有冲突是很重要的。

例如,扩展(monkeypatch)方法是从我的gem代码中调用的。

class Array
  def sum
    inject(0.0) { |result, el| result + el }
  end

所以,解决方案似乎是一个模块。

如何创建模块并确保在下载和使用gem时与其他代码没有冲突?

1 个答案:

答案 0 :(得分:3)

你就是这样做的。创建一个模块,然后使用它:

 module MyLibrary
   class MyGraphicsClass
     # ...
   end
 end

这在没有办法有助于防止你的猴子补丁踩到别人的脚趾上。没有办法阻止您对Array的修改可能会破坏其他人的代码。解决方案是不这样做。修补标准库的基本部分是一种可怕的做法,并且是确保没有人想触摸你的宝石的好方法。