Распространять CouchDB как часть приложения Rails? - PullRequest
4 голосов
/ 04 мая 2010

Я работаю над проектом Rails, и Архитектор попросил меня изучить возможность подключения CouchDB к приложению, чтобы он мог быть развернут Capistrano на нескольких платформах и управляться Rake.

Я ожидал, что смогу установить виртуальную машину Erlang в различных средах, а затем распространять приложение CouchDB с Capistrano. Однако я не могу найти никакой возможности загрузить CouchDB без среды исполнения Erlang. Однако я могу увидеть вариант сборки CouchDB из источника, который, как я полагаю, зависит от платформы.

Я новичок в Erlang и CouchBD, я что-то упустил? Есть ли способ встроить CouchDB в приложение Rails и распределить его по нескольким платформам?

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

Взгляните на некоторые инструменты для предоставления услуг Rails (например, passenger_stack ). Passenger Stack будет загружать, создавать и устанавливать вспомогательные службы для вашего приложения Rails ... это может быть то, что вы можете адаптировать или использовать в качестве основы для установки Erlang и CouchDB.

Есть множество альтернатив этому. Deprec содержит рецепты для обеспечения с Capistrano. Основная идея та же самая, хотя.

1 голос
/ 04 мая 2010

Я думаю, вы не найдете серебряную пулю. Распространение Erlang похоже на распространение Ruby; однако преимущество Ruby заключается в том, что он включен во многие установки ОС по умолчанию.

Я знаю, ejabberd имеет встроенные двоичные файлы для многих дистрибутивов. Вы можете исследовать, как они это делают.

Правильное решение, вероятно, зависит от того, сколько "нескольких платформ" вы нацеливаете. Если это «Ubuntu 8.04 плюс Ubuntu 10.04», это отличается от нескольких дистрибутивов Linux, плюс OSX, плюс FreeBSD. Обычно только те проекты с открытым исходным кодом поддерживают эти многочисленные платформы, и в идеале вы можете получить исправления от сообщества. Что касается внутренних проектов, я видел, как команды стандартизируют сборку Linux и используют виртуализацию на Mac / Windows.

Но вернемся к вашему вопросу:

Строительство из источника является разумным вариантом. Вы можете выполнить сборку при развертывании или предварительную сборку для всех платформ, а затем развернуть двоичные файлы. И Erlang, и CouchDB используют Autoconf, что означает, что вы можете --prefix отправить их в выделенное место (более или менее автономные приложения). Это займет несколько проб и ошибок, но ваш скрипт сборки может

  1. Настройка зависимости для платформы: gcc, make, autoconf, все, что вам нужно. apt-get в Ubuntu, yum в RHEL, Macports, все, что вам нужно, чтобы получить общую платформу в вашей системе разработки и развертывания
  2. Скомпилируйте и установите остальные, используя инструменты из шага 1. Используйте configure --prefix=/opt/my_software, чтобы хранить все это в одном месте. (Вы можете полностью удалить с помощью rm -rf.)

Это задача среднего уровня - в основном, методом проб и ошибок. Если возможно, работайте в рамках сборки, такой как Rake или предложение Тоби passenger_stack. Удачи!

...