2

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

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

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

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

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

如何创建一个模块,并保证gem被他人下载使用时不与其他代码冲突?

4

1 回答 1

3

你就去做吧。创建一个模块,并使用它:

 module MyLibrary
   class MyGraphicsClass
     # ...
   end
 end

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

于 2012-10-29T04:47:47.653 回答