Варианты развертывания JRuby, поддерживающие несколько версий JRuby

Я ищу способ развернуть несколько приложений JRuby на одном сервере, приложения находятся на разных этапах и, следовательно, используют разные версии JRuby, в долгосрочной перспективе было бы довольно сложно попытаться синхронизировать все приложения со всеми серверов приложений, поэтому я ищу что-то вроде Phusion Passenger 4 в Javaland.

Судя по всему, Passenger позволяет что-то подобное, но нет документации о том, как такая установка должна работать. Torquebox не упоминает этот вариант использования в своих документах.

Бонусные баллы за:

  1. решения, позволяющие git pull развертывание
  2. решения, которые rvm дружелюбны
  3. решения, не основанные на Tomcat
  4. решения, удобные для кластеризации
  5. решения, которые самостоятельно обрабатывают демонизацию, маршрутизацию, управление ресурсами и мониторинг
  6. зрелые и активно поддерживаемые решения

Пока все, на что я смотрел, не удалось по некоторым пунктам, Torquebox, похоже, не поддерживает несколько версий jruby, trinidad - это tomcat, puma требует некоторой поддержки вручную (мониторинг процесса, обратный прокси и т. Д.) И т. Д.


person bbozo    schedule 27.10.2014    source источник


Ответы (2)


вероятно, лучшим вариантом было бы сделать это "Java-способом" с помощью https://github.com/jruby/warbler

у вас получится .war, который упаковывает jar-файлы JRuby в архив, поэтому у каждого приложения будет своя собственная версия JRuby. это, конечно, требует, чтобы вы установили сервер приложений Java (например, Tomcat), процесс развертывания обычно означает копирование упакованного файла .war в папку развертывания сервера.

имейте в виду, что для этого, вероятно, потребуется много памяти, так как ни одна из библиотек, используемых JRuby, не будет совместно использоваться (также с некоторыми серверами вам необходимо убедиться, что загрузчик классов сначала смотрит на jar-файлы войны во время определенного варианта конфигурации развертывания)

person kares    schedule 29.10.2014
comment
Это тщательный ответ, но я не фанат этого варианта, потому что он усложняет развертывание - слишком часто я задавался вопросом, развернута ли правильная война, чего никогда не случалось со мной с механикой git pull и перезапуска развертывания - person bbozo; 28.11.2014
comment
это очень субъективно ... некоторые могут сказать, что необходимость установки git, jruby (с бандлером) + to-do bundle install при каждом развертывании сложна по сравнению с упаковкой всего этого и копированием в автономный архив :) ... возможно, вы просто пропустили указание идентификатора фиксации git в имени .war, например my_rails-1f1b25fc.war - person kares; 28.11.2014

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

Плюсы в том, что он совместим с rvm, может поддерживать несколько Rubies через несколько процессов puma и позволяет развертывать git pull.

Есть также jetpack в качестве альтернативы, но у меня не было возможности поиграть с ним.

person bbozo    schedule 28.11.2014