У меня есть приложение rails, которое исправляет ActiveRecord с помощью валидатора, закодированного вручную.
Патч сделан путем добавления следующих строк в config / environment.rb
Rails::Initializer.run do |config|
...
end
class ActiveRecord::Base
include MtLib::DBValidations
end
Это прекрасно работает в производственном режиме, т.е. с
config.cache_classes = true
однако он не работает в разработке, если для cache_classes установлено значение false.
Выдается ошибка
ArgumentError (A copy of MtLib::DBValidations has been removed from
the module tree but is still active!):
Мой вопрос заключается в том, каков процесс, который используется, когда cache_class имеет значение false. Rails повторно запускает какой-либо из методов инициализации? Если нет, то где мне лучше всего поставить патч, чтобы он был во всех моделях и выдержал перезагрузку классов?
Я попытался добавить исправление в config / initializers / active_record_patch, однако это не перезапускается при перезагрузке классов.