2010-05-04 31 views
4

我正在开发Rails项目,并且架构师要求我调查将CouchDB捆绑到应用程序中,以便它可以由Capistrano跨多个平台部署并由Rake管理。将CouchDB作为Rails应用程序的一部分分发?

我的期望是,我可以在各种环境中设置Erlang虚拟机,然后使用Capistrano分发CouchDB应用程序。但是,我找不到任何选项来在没有Erlang运行时的情况下下载CouchDB。不过,我可以看到一个选择,从源代码构建CouchDB,我认为它是依赖于平台的。

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

回答

1

我想你不会找到一颗银弹。分发Erlang类似于分发Ruby;但是Ruby具有被包含在许多默认操作系统安装中的优势。

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

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

但是,回到你的问题:

从源

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

  1. 特定于平台的依赖性设置:gccmakeautoconf,你需要的一切。 apt-get在RHEL,Macports上,yum,无论您需要在开发和部署系统上获得公共平台
  2. 使用步骤1中的工具编译并安装其余部分。使用configure --prefix=/opt/my_software将它保留在一个位置。 (您可以完全卸载rm -rf。)

这是一个中等级别的挑战 - 主要是试验和错误。如果可能,在Rake或Toby的建议passenger_stack等构建框架内工作。祝你好运!

+0

很棒的回答。我总结了这一点并将其呈现给我们的建筑师。最后,他决定单独设置每个环境会更简单。 供参考。环境是RHEL,Ubuntu和OSX。 此外,每个开发人员都可以控制其开发环境,因此有多个开发人员可以分别管理它们。 – AaronThomson 2010-05-04 23:38:30

2

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

还有一堆替代品。 Deprec包含用Capistrano进行配置的配方。基本的想法是相同的。

+0

感谢您的建议。 passenger_stack看起来不错,但似乎只支持基于apt的系统。不幸的是,这为我团队的大部分环境规定了它。最后,架构师决定手动进行设置。不过,我可能会考虑扩展passenger_stack以包含yum和macports,因为我确信类似的需求会再次出现。 – AaronThomson 2010-05-04 23:41:04

相关问题