Как создать псевдоним метода класса в модуле?
Я использую 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.
Module
класс? Может быть, в Ruby on Railslib
каталог?Как правильно «расширить»Module
класс в файле расширения ядра?Это правильный путь? То есть, например, я должен «расширить» другой класс (Object
, BasicObject
, Kernel
, ...) скорее, чемModule
? или мне вообще не следует реализовывать упомянутое расширение ядра?Но,более важныйЕсть ли функция Ruby, которая делает то, что я пытаюсь сделать, чтобы мне не пришлось расширять его классы?