В настоящее время я рассматриваю Ruby / Ruby on Rails как альтернативу Python / Django. Моя основная проблема заключается в том, что довольно неясно, каковы лучшие практики, когда дело доходит до установки Ruby gems и / или проектов Ruby on Rails на Linux с общим dist или Gentoo в частности.
В Gentoo разработчики обычно упаковывают драгоценные камни. Это предпочтительный способ установки через portage вместо gem. Тем не менее, я не знаю, правильный ли это путь, потому что у вас всегда будут отсутствовать основные проекты и их зависимости, для которых вам придется либо написать свой собственный ebuild (не такая уж большая проблема), либо поддерживать его. И в этот момент я не вижу большего преимущества, потому что я должен внимательно следить за пакетами в поисках новых разработок, как только я написал свой собственный ebuild, потому что в пакете не будет никаких волшебных ударов. :-) Также мир Ruby - это быстро движущаяся цель, и не все упакованные драгоценные камни в дереве dist действительно соответствуют скорости.
С другой стороны, установка напрямую через Bundler или напрямую через диспетчер пакетов gem тоже кажется ненадежной. Если вы не будете осторожны, вы обойдете диспетчер пакетов dists и получите двух конкурирующих менеджеров. Dist обновляется до Ruby 1.9.4 и вводит некоторые специфические особенности dist, а некоторые драгоценные камни, например, неожиданно ломаются. Тем не менее, они исправляют для этого свои собственные упакованные драгоценные камни. Или, если вы используете Bundler, проекты имеют тенденцию быть довольно строгими, когда дело доходит до версий их зависимостей, и поэтому, даже если доступно обновление безопасности для зависимости, вы можете не получить его, потому что проект явно указал одну версию. Так что вам придется снова подключиться вручную.
Прямо сейчас я был бы признателен за мнение сообщества о том, как правильно (TM) справляться с такими вещами и как правильно поддерживать базу Ruby / Ruby on Rails и несколько проектов (включая сторонние) на производственном сервере.
Обратите внимание, что речь не идет о том, как развернуть проект / приложение. Речь идет о передовых методах обслуживания ...
Что касается передовой практики, я бы предложил нанять системного администратора для выполнения этих функций и мониторинга вашего оборудования. Вам не нужно нанимать такого человека на полный рабочий день, так как есть много системных администраторов, которые предлагают эти услуги на контрактной основе на определенное количество часов в месяц.
В противном случае я предполагаю, что это что-то вроде организации DevOps или бизнеса одного человека? В этом случае я бы поставил под сомнение выбор Gentoo для дистрибутива в такой настройке. Создайте свое приложение на стабильный дистрибутив с предварительно скомпилированными пакетами и поддержкой поставщика. Сосредоточьте свою функциональность на одной версии платформы и периодически обновляйте ее до более новой версии по мере необходимости. Не тратьте время на погоню за новейшей версией языка или платформы, которая является «быстро меняющейся», поскольку это в лучшем случае рецепт неэффективности, а в худшем - неудачный бизнес.
Если вы смотрите на Rails как на альтернативу Python / Django, вероятно, вы уже знаете virtualenv и почему хотите его использовать.
Для Ruby и Rails я предлагаю вам взглянуть на rvm и rbenv.