Я хочу использовать знакомые помощники рельсов, но с немного измененной функциональностью. Как я это вижу, я хочу иметь возможность сделать что-то вроде:
module AwesomeHelper
#... create alias of stylesheet_link_tag to old_stylesheet_link_tag
def stylesheet_link_tag(*args)
if @be_awesome
awesome_stylesheet_link_tag *args
else
old_stylesheet_link_tag *args
end
end
end
Как я это вижу, у меня есть три варианта:
- Исправление Monkey: повторное открытие вспомогательного модуля rails. Если команда rails когда-нибудь изменит название своего вспомогательного модуля, мой код станет источником нестабильности. Не непреодолимый, но не идеальный.
- Используйте разные имена методов: Попытка придерживаться интерфейса Common Rail может стать моей ошибкой. Мои изменения могут стать источником путаницы для других разработчиков
- Методы отсоединения (новые): не уверен, сработает ли это или будут ли у него те же недостатки, что и в 1. Изучу это, но это может быть хорошей отправной точкой.
Итак, вопрос здесь в том, застрял ли я с одним из этих неоптимальных решений, или есть другой способ, который я не рассмотрел? Если я выберу вариант 3, есть ли способ сделать это без прямого обращения к вспомогательному модулю rails?
(Примечание: я удалил контекст, так как он ничего не добавляет к вопросу.)