1

以下のような状況があります。

Module Task
  def get(a)
      fetch(a)
  end

  def fetch(a)
      query(a)
  end

  def query(a)
      puts a
  end
end

メソッドのみgetがモジュールの外部から呼び出されます

Task.get('name')

私は、インターンを呼び出すので、メソッドqueryの応答にいくつかの変更を加えるために、メソッドのみにパッチを適用したいと考えています。getquery

これを行う方法を提案してください。

4

1 に答える 1

1

このような場合にモンキーパッチを適用するには、libフォルダーにファイルを含める必要があります。この場合、同じ名前のlibフォルダー内にファイルを作成する必要があります。その中に最初にモジュールTASKを含め、次にMODULENAME.module_evalこれにメソッドを使用して追加します。このファイルでは、uは実際のモジュールのメソッドをオーバーライドし、それにメソッドを追加することもできます。これが機能するためには、config / initializers/app.rbのlibに作成されたファイルuが必要になります。

乗り越えているモジュールがフォルダー内にある場合(ruby gemの場合など)、パス全体を含める必要があります。例:

Module_1.Module_2.module_eval

ここで、モジュール2はモジュール1の内部にあります。

于 2013-02-06T05:55:38.687 に答える