Запуск сайта Rails: разработка и производство

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

  • Продолжается ли сайт с rails server?
  • Любые различия с настройкой db?

Примечание. Я запускаю Rails 3.

Ответ 1

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

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

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

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

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

Руководство по настройке Rails: http://guides.rubyonrails.org/configuring.html

Ответ 2

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

RAILS_ENV=production ./script/server 

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

С другой стороны, развертывание рельсов в производственной коробке - это нечто иное. Вам нужно будет тщательно подобрать свой сервер. Возможно, вам придется иметь дело с развертыванием script может быть capistrano. Вам также может понадобиться балансировщик нагрузки, такой как netgear. База данных также может потребовать глубокого рассмотрения, такого как ожидание размера, кластеризация ведущего/ведомого и т.д.,

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