Назад | Перейти на главную страницу

Есть ли обычный способ управления зависимостями сервера Ruby on Rails?

Мы используем Chef для настройки наших серверов, но я ищу способ консолидировать наши серверные зависимости в один файл конфигурации, который находится в системе управления версиями.

Мы используем capistrano для развертывания, настраиваемый скрипт сборки для непрерывной интеграции, и теперь мы хотим, чтобы опрос Nagios проверял наличие всех зависимостей (установлен rvm, правильная версия ruby, установленные драгоценные камни и т. Д.)

Это означает, что мы будем дублировать конфигурацию зависимостей в трех местах, и я хотел бы реорганизовать это. Я хочу иметь возможность использовать один и тот же код как из моего сценария развертывания, так и из моего сценария сборки для обработки установки пакетов и настройки среды. Мы думали об использовании наших сценариев capistrano в сценарии сборки, но это кажется слишком запутанным. Я также ищу код, который может проверить среду и убедиться, что она соответствует требованиям приложения.

Я представляю, что конфигурация будет чем-то вроде .environment.yml в корневом каталоге приложения. Сценарии могут быть чем-то вроде './script/environment setup' и './script/environment check'.

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

для того, что вы упоминаете, поддерживайте конфигурацию в моем репо, я использую марионетку http://puppetlabs.com/ идеально, потому что марионетка настроена не так, как capistrano, где вы говорите, как в марионетке, вы говорите что, а марионетка выполняет свою работу.

Вы можете (и, вероятно, должны) использовать include инструкции рецептов в ваших приложениях Ruby.

Если вы говорите об обязательных гемах, вы можете включить в свое приложение гем-файл.

Одна из проблем Chef (и, вероятно, Puppet тоже) заключается в том, что существует множество «правильных» способов делать что-то, и трудно понять, какой из них «наиболее подходит» для вашей ситуации.