2

グラフィック ライブラリの gem を作成しています。

gem を作成するときは、他の gem や他のコードと競合しないようにすることが重要なようです。

たとえば、拡張 (monkeypatch) メソッドは、私の gem コード内から呼び出されます。

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

したがって、解決策はモジュールのようです。

モジュールを作成し、他の人が gem をダウンロードして使用するときに他のコードと競合しないようにする方法は?

4

1 に答える 1

3

あなたはそれをするだけです。モジュールを作成して使用します。

 module MyLibrary
   class MyGraphicsClass
     # ...
   end
 end

これは、あなたのモンキーパッチが他の人のつま先を踏むのを防ぐのに決して役立ちません. Array への変更が他の人のコードを壊す可能性を防ぐ方法はありません。解決策は、そうしないことです。標準ライブラリの基本的な部分にパッチを当てることは恐ろしい慣行であり、誰もあなたの宝石に触れたくないということを確実にする素晴らしい方法です.

于 2012-10-29T04:47:47.653 に答える