2012-02-19 78 views
4

我是使用RoR-CoffeeScript-Sass-Passenger-Apache的開發人員。我們使用EC2進行部署,並且我們使用Macbook Airs進行開發。儘管rails社區對Mac非常友好,但由於dev和prod之間的整個部署堆棧不同,我使用的是virtualbox + ubuntu,而我的同行正在使用OS X native進行開發。Ruby開發環境(OS X與Ubuntu)

有在OS X原生正如我們在棧有更多的依賴性(Solr的,魔豆,MongoDB的多,其在Ubuntu效果很好)

我在尋找的建議如何使用Rails的Mac開發增加了更多的問題Amazon EC2可以設置其開發和生產環境。

還想反饋使用vagrant分發開發環境的用例。

回答

2

我們的團隊一直在Mac上開發並在EC2上部署到Ubuntu上三年,現在只有很少的問題。有幾件事使這個過程順利進行:

  1. 我們可以在Mac上運行整個應用程序堆棧**。在需要的時候,在macports,homebrew和源碼建設之間,我們設法獲得了我們在開發工具上運行的每一項技術。碎片配置和配合的方式在本地是不同的(例如,我們會自動發現memcached實例,而本地則是硬編碼),但每次集成都可以先在Mac上進行測試,然後再進行製作。

  2. 我們的連續構建系統與我們的prod盒具有相同的設置。這意味着如果你檢查一些代碼取決於一些本地魔法,它會很快被發現。

  3. 我們運行浸泡(一些人稱之爲分段或整合)堆棧,其配置與生產相同。這有時會導致一些開發費用,但有很多好處,它非常值得。所有代碼在推送到產品之前都會經過這個堆棧。

該設置已經運行良好,隨着時間的推移,我們已經允許設置的更多部分漂移。我們過去常常在當地運營旅客(就像我們在做產品時那樣),但現在使用Pow。在升級剩下的堆棧之前,我們經常在開發中嘗試使用新的ruby版本一段時間。

我不得不爲其他項目(VirtualBox中的OSX + CentOS)使用虛擬化環境而開發,並且肯定會發現它更加痛苦的是所有原生的。首先,它感覺像管理兩臺機器而不是一臺。一切也都覺得sloooooowww。

如果有一塊堆棧在Mac上運行很痛苦,我肯定會選擇a)花點時間在本地工作,或者b)將該塊摘除掉,而不是支付處理虛擬環境的稅。

**我只在本討論中包含Rails應用程序和直接依賴項。例如,我們使用puppet配置我們的EC2車隊,但不要在我們的開發箱上運行它。

3

通常的做法是將您的堆棧複製爲「暫存」環境。使用EC2,您可以創建現有機器的AMI並複製它們,只將它們打開以測試部署,然後運行測試以確保在將其部署到生產之前,所有部件都正常運行。或者,您可能希望永久保留它,以便開發人員可以快速部署更新或修補程序以根據需要進行測試。

這樣做可以確保您在生產之前有一個完整的生產系統副本進行測試,從而消除有關部署潛入生產的任何(災難性)問題。

+0

謝謝凱文。這確實回答了我的問題的一部分。通過你的回答,我假設你建議我使用OS X作爲默認開發環境,並推動爲測試部署「製作」副本。另外,當你有一個依賴堆棧時,你如何設置你的本地環境? – Alagu 2012-02-19 14:16:19

+0

要添加,我正在尋找當依賴堆棧變大時使用Native OS X和Virtualbox的優點和缺點的答案。 – Alagu 2012-02-19 14:19:37

+0

在開發機器上,它應該像在OSX上根據需要設置堆棧一樣簡單。您可以創建一個腳本,爲新開發人員做所有事情,使其不那麼痛苦。希望每個開發人員都能夠在Virtual box中運行,看起來非常適得其反。如果你不是一個分佈式的勞動力隊伍,一個簡單的答案就是爲nix購買或重新使用計算機,並允許每個開發者自己的端口運行他們的代碼並進行測試。 – 2012-02-20 14:09:59