【问题标题】:Distribute CouchDB as part of a Rails app?将 CouchDB 作为 Rails 应用程序的一部分分发?
【发布时间】:2011-02-15 06:51:54
【问题描述】:

我正在处理一个 Rails 项目,架构师要求我研究将 CouchDB 捆绑到应用程序中,以便 Capistrano 可以跨多个平台部署它并由 Rake 管理。

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

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

【问题讨论】:

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


    【解决方案1】:

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

    还有很多替代方案。 Deprec 包含使用 Capistrano 进行配置的配方。基本的想法是一样的。

    【讨论】:

    • 感谢您的建议。乘客堆栈看起来不错,但似乎只支持基于 apt 的系统。不幸的是,这排除了我团队的大多数环境。最后,架构师决定手动进行设置。但是,我可能会考虑扩展乘客堆栈以包括 yum 和 macports,因为我确信类似的要求会再次出现。
    【解决方案2】:

    我认为你不会找到灵丹妙药。分发 Erlang 类似于分发 Ruby;然而,Ruby 的优势在于可以包含在许多默认操作系统安装中。

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

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

    但回到你的问题:

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

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

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

    【讨论】:

    • 很好的答案。我对此进行了总结并将其提交给我们的建筑师。最后,他决定单独设置每个环境会更简单。供参考。环境是 RHEL、Ubuntu 和 OSX。此外,每个开发人员都可以控制他们的开发环境,所以有几个,但开发人员可以单独管理它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多