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

4
我正在开发一个Rails项目,架构师要求我调查将CouchDB捆绑到应用程序中,以便可以通过Capistrano在多个平台上部署并由Rake管理。
我的期望是在各种环境中设置Erlang VM,然后使用Capistrano分发CouchDB应用程序。但是,我找不到任何不包含Erlang运行时的下载CouchDB的选项。但是,我可以看到从源代码构建CouchDB的选项,我假设这是与平台相关的。
我对Erlang和CouchBD都很陌生,我错过了什么吗?是否有一种方法将CouchDB捆绑到Rails应用程序中,并在多个平台上分发它?
2个回答

2
请查看一些用于配置Rails服务的工具(例如passenger_stack)。Passenger Stack将为您的Rails应用程序下载、制作和安装辅助服务......这可能是您可以适应或用作安装Erlang和CouchDB的基础。
还有许多其他替代方案。Deprec包含使用Capistrano进行配置的配方。然而,基本思想是相同的。

谢谢您的建议。passenger_stack看起来不错,但似乎只支持基于apt的系统。不幸的是,这使得它对我们团队的大多数环境都不适用。最终,架构师决定手动进行设置。然而,我可能会考虑扩展passenger_stack以包括yum和macports,因为我相信类似的要求将再次出现。 - AaronThomson

1

我认为你不会找到一种万能的解决方案。分发Erlang与分发Ruby类似;但是Ruby有一个优势,就是它被包含在许多默认的操作系统安装中。

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

正确的解决方案可能取决于你要针对多少“多平台”。如果只是“Ubuntu 8.04加上Ubuntu 10.04”,那就不同于几个Linux发行版、加上OSX、加上FreeBSD。通常只有开源项目支持这么多平台,并且理想情况下,你可以从社区获得补丁。对于内部项目,我看到团队会标准化一个Linux构建,并在Mac/Windows上使用虚拟化。

但回到你的问题:

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

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

这是一个中等难度的挑战--主要是试错。如果可能的话,请在构建框架(如Rake或Toby的建议passenger_stack)内工作。祝你好运!


很棒的答案。我总结了一下并向我们的架构师介绍了这个建议。最终他决定每个环境单独设置会更简单。FYI,这些环境是RHEL、Ubuntu和OSX。此外,每个开发人员都控制着自己的开发环境,因此有几个不同的环境,但开发人员可以单独管理它们。 - AaronThomson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接