Jak aliasować metodę klas w module?

Używam klejnotów Ruby v1.9.2 i Ruby on Rails v3.2.2. Miałem następujący moduł

module MyModule
  extend ActiveSupport::Concern

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

i chciałem aliasowaćmetoda klasy my_method. Tak więc stwierdziłem, co następuje (nie działa) kod:

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

Innymi słowy, myślałem, aby przedłużyćModule w jakiś sposób, aby dodaćalias_class_method metoda dostępna w całym tekścieMyModule. Chciałbym jednak to zrobićpracować ibyć dostępnym we wszystkich moich aplikacjach Ruby on Rails.

Gdzie powinienem umieścić plik związany z rozszerzeniem rdzenia RubyModule klasa? Może w Ruby on Railslib informator?Jak powinienem właściwie „rozszerzyć”Module klasa w pliku rozszerzenia podstawowego?Czy to właściwy sposób postępowania? To znaczy, na przykład, czy powinienem „rozszerzyć” inną klasę (Object, BasicObject, Kernel, ...) zamiastModule? czy powinienem w ogóle unikać wdrażania wspomnianego rozszerzenia podstawowego?

Ale,ważniejsze, czy istnieje funkcja Ruby, która czyni to, co próbuję osiągnąć, aby nie musieć rozszerzać jej klas?

questionAnswers(3)

yourAnswerToTheQuestion