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

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

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

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

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

Вы могли бы использовать`define_singleton_method` обернуть ваш старый метод под новым именем, вот так:

Отвечая на ваш комментарий, вам не придется расширять каждый класс вручную.`define_singleton_method` реализуется в`Object` класс. Так что вы можете просто продлить`Object` класс, так что каждый класс должен иметь доступный метод ...

Поместите это в инициализатор в вашем приложении на Rails, и вам будет хорошо ...



<http://engineering.lonelyplanet.com/2012/12/09/monitoring-our-applications-ruby-methods/>

Решение заключается в использовании[`class_eval`](https://ruby-doc.org/core-2.0.0/Module.html#method-i-class_eval) с блоком. Это позволяет использовать переменные из окружающей области.

Если у вас нет[`singleton_class`](https://www.ruby-doc.org/core-1.9.2/Object.html#method-i-singleton_class) тогда вам, вероятно, следует обновить вашу версию Ruby. Если это невозможно, вы можете сделать это:



Принятый ответ сбивал с толку и не работал.