Я полагаю, что люди считают приложение Rails сложнее в развертывании, чем, скажем, некоторые приложения PHP или что-то подобное, когда вы просто добавляете код куда-то и указываете на Apache или что-то еще. Но, как уже упоминалось выше, вы можете сделать это сейчас с Phusion Passenger.
Мы используем Nginx + Passenger, но не для простоты развертывания. Capistrano - наш предпочтительный инструмент для развертывания, и на самом деле, если у вас нет очень простого приложения, вы все равно захотите что-то вроде Capistrano. Например, с нашим развертыванием мы делаем множество вещей:
- запускать любые миграции баз данных
- генерирует заметки о выпуске автоматически на основе всех коммитов в Git между последним развертыванием и этим
- уведомлять различных людей по электронной почте (с различными списками в зависимости от того, относится ли развертывание к нашей промежуточной среде или рабочей среде) - мы делаем это с помощью cap_gun, который интегрируется с Capistrano.
- Уведомить RPM New Relic о развертывании, чтобы он мог пометить его в нашем анализе RPM
- Уведомить Hoptoad о развертывании, чтобы оно также могло иметь эти данные при сообщении о любых исключениях
- создайте наш файл sitemap.xml и отправьте команду Google, чтобы сообщить им, что есть новый
- обновить файлы crontab (я сохраняю наши файлы crontab для каждого сервера в нашем git-репо, а затем при развертывании проверяет, есть ли новая версия, и соответственно обновляет и т. Д.).
- сброс / перезапуск memcached
Есть и другие способы, кроме Capistrano, но это проверенный инструмент, обладающий большой гибкостью и довольно простой настройкой конфигурации ванили.
Итак, я предполагаю, что как только вы попадете в любое приложение, которое выходит за рамки самых простых приложений, вам понадобится / вы захотите заняться чем-то другим, кроме простого обновления кода. Однако в начале, если вам просто нужны обновления кода и, возможно, миграции Rails, вы можете сделать более простые вещи, такие как Passenger и синхронизация кода, или посмотреть на такие инструменты, как Heroku или Engine Yard, где они выполняют развертывание, выполняя клон Git. (а затем предложите некоторые дополнительные способности).