Запуск сайта Rails: разработка против производства - PullRequest
12 голосов
/ 26 ноября 2011

Я изучаю Ruby on Rails. В данный момент я просто запускаю свой сайт локально с rails server в OS X Terminal. Что меняется, когда сайт Rails запускается в рабочей коробке?

  • Сайт все еще запущен с rails server?
  • Есть ли различия в настройке БД?

Примечание : я использую Rails 3.

Ответы [ 2 ]

18 голосов
/ 26 ноября 2011

Приложение rails может быть запущено в производственном режиме, вызывая rails server -e production, хотя в 99% случаев вы будете обслуживать что-то вроде пассажира или тонкого вместо WEBrick, что означает, что есть другая команда для запуска сервера. (thin start -e production например)

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

По сути, если приложение Rails 3.1 находится в производственном режиме, то по умолчанию оно не будет компилировать ресурсы «на лету», и будет происходить большое кеширование, чего не происходит в разработке. Кроме того, когда вы получаете сообщения об ошибках, они регистрируются, но не отображаются для пользователя, вместо этого будет использоваться страница статической ошибки из вашего общего каталога.

Чтобы лучше понять это, я бы предложил прочитать соответствующие руководства по рельсам:

Руководство по инициализации Rails: http://guides.rubyonrails.org/initialization.html

Руководство по конфигурации Rails: http://guides.rubyonrails.org/configuring.html

2 голосов
/ 26 ноября 2011

Здесь можно использовать слово «производство» в двух контекстах.Одним из них является запуск сервера в производственном режиме.Вы можете сделать это локально,

RAILS_ENV=production ./script/server 

Конфигурация для этого выбрана из config / environment / production.rb.Попробуйте сравнить этот файл с config / environment / development.rb.Есть только тонкие различия, такие как классы кэширования.Режим разработки облегчает работу и мгновенно реагирует на любые внесенные вами изменения.Кроме того, будут использоваться две разные базы данных (по умолчанию), а именно yourproject_development и yourproject_production, если вы решите запустить сервер в любом из этих режимов.,Вам нужно будет тщательно подобрать свой сервер.Возможно, вам придется иметь дело со сценарием развертывания, может быть, capistrano.Вам также может понадобиться балансировщик нагрузки, такой как netgear.База данных также может потребовать глубокого рассмотрения, таких как ожидание размера, кластеризация master / slave и т. Д.,

Примечание. Я никогда не использовал Rails 3. Этот ответ смещен в сторону 2.3.x.

...