Под "кэшированием классов" я предполагаю, что вы имеете в виду, что исходные файлы в каталоге приложения автоматически перезагружаются в среде разработки перед обработкой нового запроса?
Это не связано с кэшированием, обычное поведение Ruby - читать и анализировать исходный файл один раз и никогда больше, пока выполняется процесс. Rails (на самом деле ActiveSupport :: Dependencies) предоставляет механизм для перезагрузки всего кода перед обработкой запроса. В среде разработки это полезно, поскольку вы не хотите перезапускать локальный веб-сервер для каждого изменения, которое вы вносите в код. В производственной среде это сильно ухудшит производительность и поэтому будет отключено.
По умолчанию классы приложений помечены как перезагружаемые. Вы можете пометить произвольные классы для перезагрузки перед обработкой запроса в среде разработки, используя метод класса unloadable
:
class MyClass
unloadable # mark this class as reloadable before a request is processed
# …
end
Помните, что не каждый класс может хорошо играть с разгрузкой. Пока вы определяете свой класс в одном исходном файле, который будет найден и загружен механизмом автозагрузки Rails, вы, вероятно, хороши. Но могут возникнуть проблемы, если вы снова откроете свой класс в другом месте, чтобы обезопасить его, так как автозагрузка не поймает это.