Как создать псевдоним метода класса в модуле?

Я использую Ruby v1.9.2 и гем Ruby on Rails v3.2.2. У меня был следующий модуль

module MyModule
  extend ActiveSupport::Concern

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

и я хотел псевдонимметод класса my_method, Итак, я заявил следующее (не работает) код:

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

Другими словами, я подумал продлитьModule класс как-то для того, чтобы добавитьalias_class_method метод доступен во всемMyModule, Тем не менее, я хотел бы сделать этоработать а такжебыть доступным во всех моих приложениях Ruby on Rails.

Где я должен положить файл, связанный с расширением ядра RubyModule класс? Может быть, в Ruby on Railslib каталог?Как правильно «расширить»Module класс в файле расширения ядра?Это правильный путь? То есть, например, я должен «расширить» другой класс (Object, BasicObject, Kernel, ...) скорее, чемModule? или мне вообще не следует реализовывать упомянутое расширение ядра?

Но,более важныйЕсть ли функция Ruby, которая делает то, что я пытаюсь сделать, чтобы мне не пришлось расширять его классы?

Ответы на вопрос(3)

Ваш ответ на вопрос