Существуют значительные различия между режимами "разработки" и "производства", даже если эти два кажутся внешне похожими.
В режиме разработки любой файл в app/
и config/routes.rb
перезагружается при каждом запросе. Это может занять значительное количество времени для обработки, но имеет преимущество в получении актуального ответа на основе любых изменений в вашей кодовой базе, что, по-видимому, происходит в среде разработки. Поскольку производственная среда не должна меняться между развертываниями, Rails будет кэшировать ваши контроллеры, представления, маршруты, помощники и модели для максимальной производительности. Любые изменения в источнике потребуют перезапуска приложения.
Другая особенность разработки заключается в том, что уровень ведения журнала Rails установлен на debug
, что является максимально подробным. Вы не только получаете подробную разбивку по каждому выполненному вызову SQL, но также получаете незначительные предупреждения и другие информативные сообщения, которые в противном случае были бы пропущены при производстве. Это ведение журнала значительно снижает производительность и не должно использоваться в производственной среде, если вы не пытаетесь диагностировать проблему. Эти файлы журнала становятся очень большими очень быстро, и их может быть трудно вращать без перезапуска процессов вашего веб-сервера.
В среде разработки также существует метод, позволяющий спасать от исключений и выводить их в виде удобочитаемого отчета об ошибках. Это полезно для отладки, но в производственной среде может раскрываться конфиденциальная информация о вашем приложении, поскольку она часто включает в себя много информации о файловой системе, ключевых параметрах и так далее. Это никогда не должно быть включено на производственной площадке.
Эти различия могут быть неочевидны, но вам просто нужно сравнить параметры конфигурации в config/environments/development.rb
и config/environments/production.rb
. К сожалению, неясно, каковы некоторые из значений по умолчанию, поскольку они иногда не четко выражены в этих файлах, но основы обычно присутствуют.