Все сводится к производительности и стабильности. В рабочем режиме модели кэшируются в памяти, а это означает, что после однократного чтения файлы не нужно читать снова, что дает очевидное преимущество в скорости. Это означает, что если вы измените файл ruby (например, app / models / page.rb), в котором определена модель, это изменение не будет выполнено до следующей перезагрузки.
По умолчанию следующая строка находится в config / средах / production.rb:
config.cache_classes = true
Предполагается, что когда вы находитесь в производственном режиме, вы не будете изменять свой код, кроме как посредством выпуска или развертывания. Если вы хотите очистить кеш, вам нужно перезапустить приложение.
Среда разработки будет перезагружать ваши модели при каждом получении запроса. Это контролируется следующей строкой по умолчанию в config / environment / development.rb:
config.cache_classes = false
Что касается «третьего» режима, я предполагаю, что вы имеете в виду тестовый режим. Это также кэширует модели по умолчанию (см. Config / environment / test.rb), опять же с предположением, что вы не будете изменять свою кодовую базу в середине тестового прогона.
Кстати, это не просто модели - я уверен, что этот параметр охватывает любые классы, найденные в каталоге 'app'. Кроме того, вы обнаружите, что даже в режиме разработки классы, расположенные в другом месте приложения (например, «lib»), нельзя изменить без перезапуска приложения.