Wie kann man eine Klassenmethode innerhalb eines Moduls aliasen?

Ich benutze Ruby v1.9.2 und den Ruby on Rails v3.2.2 Gem. Ich hatte das folgende Modul

module MyModule
  extend ActiveSupport::Concern

  included do
    def self.my_method(arg1, arg2)
      ...
    end
  end
end

und ich wollte den aliasKlassenmethode my_method. Also erklärte ich Folgendes (funktioniert nicht) Code:

module MyModule
  extend ActiveSupport::Concern

  included do
    def self.my_method(arg1, arg2)
      ...
    end

    # Note: the following code doesn't work (it raises "NameError: undefined
    # local variable or method `new_name' for #<Class:0x00000101412b00>").
    def self.alias_class_method(new_name, old_name)
      class << self
        alias_method new_name, old_name
      end
    end

    alias_class_method :my_new_method, :my_method
  end
end

Mit anderen Worten, ich dachte, das zu verlängernModule Klasse irgendwie, um eine hinzuzufügenalias_class_method Methode überall verfügbarMyModule. Ich würde es aber gerne schaffenarbeiten undzu Verfügung stehen in all meinen Ruby on Rails-Anwendungen.

Wo sollte ich die Datei im Zusammenhang mit der Ruby Core-Erweiterung desModule Klasse? Vielleicht im Ruby on Railslib Verzeichnis?Wie soll ich das richtig "verlängern"?Module Klasse in der Core-Extension-Datei?Ist es der richtige Weg, um fortzufahren? Das ist zum Beispiel, sollte ich eine andere Klasse "erweitern" (Object, BasicObject, Kernel, ...) eher, alsModule? oder sollte ich es vermeiden, die erwähnte Core-Erweiterung überhaupt zu implementieren?

Aber,wichtigerGibt es eine Ruby-Funktion, die mein Ziel erreicht, sodass ich die Klassen nicht erweitern muss?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage