4

requireアプリケーションのエントリ ポイントである start.rb から必要な Ruby ファイル内からオーバーライドする必要があります。rubygemsこの前に start.rb にロードされます。

私が試したすべてのことで、スタックオーバーフローエラーが発生しました。

それを行う正しい方法は何ですか?

4

1 に答える 1

11

一般に、組み込みメソッドにパッチを適用する場合は、最初に元のメソッドのエイリアスを作成する必要があります。ほとんどの場合、オーバーライド メソッドのどこかで古いものを呼び出します。そうしないと、元のメソッドの機能が失われ、アプリケーション ロジックが壊れる可能性があります。

  1. ドキュメントを使用ri requireまたは読んで、requireメソッドが定義されている場所を確認してください。モジュールにあることがわかりKernelます。さらに、そのメソッド シグネチャを見つけることができるので、パラメーター リストがどのように見えるかがわかります。
  2. モンキー パッチ モジュールKernel。何をしているのかわからない限り、機能を壊さないでください
module Kernel
  # make an alias of the original require
  alias_method :original_require, :require

  # rewrite require
  def require name
    puts name
    original_require name
  end
end

# test the new require
require 'date'
于 2013-03-27T15:06:43.710 に答える