2010-05-04 29 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

相關問題