Я расширяю класс (который находится в плагине), включая модуль, это делается в инициализаторе.
require 'qwerty/core/user'
User.send :include, Qwerty::Core::Extensions::User
Однако при разработке перед каждым запросом (и после перезагрузки! вызывается в консоли) все модели перезагружаются, но поскольку инициализаторы не запускаются снова, модуль не включается. Оставить модель с "отсутствующими частями".
Поскольку модель находится в плагине, не представляется разумным включать код непосредственно в класс, который будет обычным подходом.
На данный момент я просто добавил файл before_filter, который включает модуль, если в среде разработки. Но у меня есть копирование/вставка и дублирование кода в инициализаторе и контроллере приложений.
# Class extensions in initalizers are over-writtern each request
def development_loading
if RAILS_ENV == 'development'
User.send :include, Qwerty::Core::Extensions::User
end
end
Есть ли лучший способ?
В качестве дополнительной заметки плагин принадлежит мне, поэтому я мог бы добавить в него код, но расширения, хранящиеся в модуле, могут не всегда присутствовать...