Стратегии развертывания Rails с помощью Bundler и JRuby - PullRequest
1 голос
/ 20 мая 2010

У меня есть приложение jruby rails, и я только начал использовать bundler для управления зависимостями gem. Мне интересно услышать мнение людей о стратегиях развертывания. В документах говорится, что bundle package будет упаковывать ваши драгоценные камни локально, поэтому вам не придется извлекать их на сервер (и я думаю, что warbler делает это по умолчанию), но я лично думаю (для нас), что это не тот путь поскольку наш развернутый код (в нашем случае файл WAR) становится намного больше.

Я бы предпочел имитировать нашу установку MVN, которая выбирает все зависимости непосредственно на сервере ПОСЛЕ того, как код был скопирован туда. Вот что я думаю, все комментарии приветствуются:

Шаг 1: создание файла войны, копирование на сервер
Шаг 2: Распакуйте war на сервере, загрузите java-зависимости с помощью mvn Шаг 3: используйте Bundler для извлечения самоцветов (где их нужно разместить ??)
* Шаг 3 - шаг, который мне немного неясен. Я запускаю bundle install с конкретной целью ??
Шаг 4: Перезагрузите Tomcat

Опять же, здесь я рассуждаю так: я хотел бы отделить зависимости от кода во время развертывания. Я также хотел бы поместить все зависимости gem в само приложение, чтобы они содержались, а не устанавливать их в домашний каталог пользователя приложения (как, опять же, я считаю, по умолчанию для Bundler)

1 Ответ

0 голосов
/ 27 мая 2010

Просто глядя на структуру по умолчанию из Warbler, он копирует драгоценные камни в Rails.root/gems, поэтому я просто решил следовать этому соглашению.

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

Step1: Build war file, copy to server
Step2: Unpack war on server, fetch java dependencies with mvn 
Step3: use Bundler to fetch Gem deps: `bundle install gems --without test --disable-shared-gems`
Step4: Restart Tomcat

Также обратите внимание, что bundle install gems выглядит как конкретная команда, т.е.«Установите эти драгоценные камни», но gems фактически ссылается на драгоценные камни каталога в Rails.root.Этот каталог создан компоновщиком, поэтому при развертывании его не требуется.

Надеюсь, что это поможет любому, кто ищет подобное решение!

...