将CouchDB作为Rails应用程序的一部分分发?

时间:2010-05-04 02:17:33

标签: ruby-on-rails erlang rake couchdb capistrano

我正在开发一个Rails项目,而Architect已经让我调查将CouchDB捆绑到应用程序中,以便Capistrano可以跨多个平台部署它并由Rake管理。

我的期望是我可以在各种环境中设置Erlang VM,然后使用Capistrano分发CouchDB应用程序。但是,如果没有Erlang运行时,我找不到任何下载CouchDB的选项。但是,我可以看到从源代码构建CouchDB的选项,我认为该选项取决于平台。

我是Erlang和CouchBD的新手,我错过了什么吗?有没有办法将CouchDB捆绑到Rails应用程序并将其分布在多个平台上?

2 个答案:

答案 0 :(得分:2)

查看一些用于配置Rails服务的工具(例如passenger_stack)。 Passenger Stack将为您的Rails应用程序下载,制作和安装辅助服务......可能是您可以调整或用作安装Erlang和CouchDB的基础。

这也有很多替代方案。 Deprec包含使用Capistrano进行配置的配方。虽然基本思想是一样的。

答案 1 :(得分:1)

我想你不会找到灵丹妙药。分发Erlang类似于分发Ruby;但Ruby具有包含在许多默认操作系统安装中的优势。

我知道ejabberd为许多发行版预先构建了二进制文件。您可以调查他们是如何做到的。

正确的解决方案可能取决于您定位的“多个平台”数量。如果它是“Ubuntu 8.04 plus Ubuntu 10.04”,它不同于几个Linux发行版,加上OSX,加上FreeBSD。通常,只有开源项目支持那些许多平台,理想情况下,您可以从社区获取补丁。对于内部项目,我看到团队标准化Linux构建并在Mac / Windows上使用虚拟化。

但回到你的问题:

从源代码构建是一个合理的选择。您可以在为所有平台部署或预构建时构建,然后部署二进制文件。 Erlang和CouchDB都使用Autoconf,这意味着您可以--prefix将它们转移到专用位置(或多或少的独立应用程序)。这将需要一些试验和错误,但您的构建脚本可以

  1. 特定于平台的依赖关系设置:gccmakeautoconf,您需要的一切。关于Ubuntu的apt-get,关于RHEL,Macports的yum,无论您需要在开发和部署系统上获得通用平台,
  2. 使用步骤1中的工具编译并安装其余工具。使用configure --prefix=/opt/my_software将其保存在一个位置。 (您可以使用rm -rf完全卸载。)
  3. 这是一个中等挑战 - 主要是反复试验。如果可能,请在构建框架内工作,例如Rake或Toby的建议passenger_stack。祝你好运!