Почему якобы «сложно» развернуть Ruby on Rails в производство? - PullRequest
9 голосов
/ 18 июня 2009

Я признаю, что не следую многим "правильным" правилам развертывания теста по сравнению с рабочим кодом. Я использую ASP.NET и обычно запускаю его локально в Visual Studio, он работает, я загружаю его, я снова тестирую его на рабочем сервере.

Я читал, что некоторые люди говорят, что развертывать приложения Rails сложнее, и на сайте ruby ​​есть специальные программы / способы развертывания RoR. Я играл только с RoR. Что особенного в развертывании? Вы не просто копируете и вставляете код и запускаете его (от машины разработки до производства)? Это потому, что один находится в Apache, а другой работает на встроенном сервере?

Это будет на Mac-сервере, если это имеет значение.

Ответы [ 7 ]

15 голосов
/ 18 июня 2009

Развертывание RoR больше не сложно, особенно с Phusion Passenger .

Что несколько сложно, так это автоматическая настройка производственной среды с помощью capistrano, vlad и т. Д. Если вы не возражаете, просто скопировав свой код на сервер, вы можете сделать это просто отлично. Большинство людей предпочитают этого не делать, потому что вы теряете множество преимуществ, которые дают вам инструменты автоматического развертывания.

7 голосов
/ 19 июня 2009

Я полагаю, что люди считают приложение 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. (а затем предложите некоторые дополнительные способности).

4 голосов
/ 10 июня 2010

Другой супер простой способ развертывания - http://heroku.com/

0 голосов
/ 18 июля 2013

Некоторые проблемы, с которыми вы сталкиваетесь при развертывании рельсов на производстве:

  • Подключение к базе данных. Вы должны быть уверены, что соединитель базы данных настроен для производственной среды.

  • Миграция базы данных. Необходимо выполнить миграцию базы данных на производственную базу данных, даже если вы уже выполнили их в процессе производства / тестирования / подготовки

  • Рубиновая версия. Версия, под-версия или Ruby могут сбить вас с толку, например, Произошла ошибка при установке debugger-linecache (1.1.1), и Bundler не может продолжить

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

  • зависимости. Некоторые драгоценные камни на некоторых машинах имеют определенные зависимости. Я часто сталкивался с проблемами с использованием гемов на моем Unix-боксе, который работает на OSX и наоборот.

Обратите внимание, что последние 3 не должны влиять на вас, если на той же машине, но я включил их на основе названия и быть полным.

0 голосов
/ 19 июня 2009

Еще один действительно простой способ развертывания рельсов - это джруби и драгоценный камень стеклянной рыбы.

0 голосов
/ 18 июня 2009

Простой способ развертывания приложений Rails - это использование Phusion Passenger . Развертывание не становится намного проще, чем для любого языка программирования или фреймворка. Вы можете сделать это на сервере Mac.

0 голосов
/ 18 июня 2009

Это не особенно сложно. Если вы придерживаетесь соглашений, то с небольшой настройкой все сводится к следующему:

cap deploy

... однако иногда для начала рабочего процесса требуются небольшие усилия.

Хорошей новостью является то, что многие люди собрали решения и стеки для RoR, которые вы можете просто подключить и играть. Например, google ec2onrails - это упакованный образ Ubuntu и набор задач capistrano для запуска приложений rails в облаке Amazon EC2 с множеством общих настроек, уже настроенных из коробки.

Выберите хорошего хостинг-провайдера, и вы сможете найти что-то подобное и для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...