Я расширяю класс (который есть в плагине), включая модуль, это делается в инициализаторе.
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
Есть ли лучший способ?
В качестве дополнительного примечания плагин - мой, поэтому я мог бы добавить к нему код, но расширения, содержащиеся в модуле, могут присутствовать не всегда ...