зачем использовать производство над разработкой для применения рельсов - PullRequest
2 голосов
/ 10 ноября 2010

Есть ли существенные различия между ними?Я еще не видел документ, который объясняет, в чем главное отличие?Производительность ??

Ответы [ 3 ]

8 голосов
/ 10 ноября 2010

Существуют значительные различия между режимами "разработки" и "производства", даже если эти два кажутся внешне похожими.

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

Другая особенность разработки заключается в том, что уровень ведения журнала Rails установлен на debug, что является максимально подробным. Вы не только получаете подробную разбивку по каждому выполненному вызову SQL, но также получаете незначительные предупреждения и другие информативные сообщения, которые в противном случае были бы пропущены при производстве. Это ведение журнала значительно снижает производительность и не должно использоваться в производственной среде, если вы не пытаетесь диагностировать проблему. Эти файлы журнала становятся очень большими очень быстро, и их может быть трудно вращать без перезапуска процессов вашего веб-сервера.

В среде разработки также существует метод, позволяющий спасать от исключений и выводить их в виде удобочитаемого отчета об ошибках. Это полезно для отладки, но в производственной среде может раскрываться конфиденциальная информация о вашем приложении, поскольку она часто включает в себя много информации о файловой системе, ключевых параметрах и так далее. Это никогда не должно быть включено на производственной площадке.

Эти различия могут быть неочевидны, но вам просто нужно сравнить параметры конфигурации в config/environments/development.rb и config/environments/production.rb. К сожалению, неясно, каковы некоторые из значений по умолчанию, поскольку они иногда не четко выражены в этих файлах, но основы обычно присутствуют.

5 голосов
/ 10 ноября 2010

В рабочей среде Rails код вашего приложения кэшируется, поэтому интерпретатору не нужно перезагружать ваши классы каждый раз, когда он вызывает метод. Ваше приложение в основном хранится в памяти. Это дает определенные улучшения скорости.

Кроме того, по умолчанию выполняется намного меньше записей; например, производственные журналы не содержат каждый вызов sql, как журналы разработки.

2 голосов
/ 10 ноября 2010

Кэширование и обработка ошибок.

...