我正在开发一个Rails项目,而Architect已经让我调查将CouchDB捆绑到应用程序中,以便Capistrano可以跨多个平台部署它并由Rake管理。
我的期望是我可以在各种环境中设置Erlang VM,然后使用Capistrano分发CouchDB应用程序。但是,如果没有Erlang运行时,我找不到任何下载CouchDB的选项。但是,我可以看到从源代码构建CouchDB的选项,我认为该选项取决于平台。
我是Erlang和CouchBD的新手,我错过了什么吗?有没有办法将CouchDB捆绑到Rails应用程序并将其分布在多个平台上?
答案 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
将它们转移到专用位置(或多或少的独立应用程序)。这将需要一些试验和错误,但您的构建脚本可以
gcc
,make
,autoconf
,您需要的一切。关于Ubuntu的apt-get
,关于RHEL,Macports的yum
,无论您需要在开发和部署系统上获得通用平台,configure --prefix=/opt/my_software
将其保存在一个位置。 (您可以使用rm -rf
完全卸载。)这是一个中等挑战 - 主要是反复试验。如果可能,请在构建框架内工作,例如Rake或Toby的建议passenger_stack
。祝你好运!