2011-08-11 20 views
1

幾年前,部署Rails應用程序似乎相當棘手。然而,從我最近閱讀的內容看來,這個領域的鐵軌已經有了很大的改進。但是,考慮到各種版本的Ruby和gem依賴性問題,部署仍然很頭疼(例如,heroku或引擎工廠)?Rails部署的當前狀態

+0

幾年前,部署過程中一切都很好,上次沒有太多變化。如果您的要求符合capistrano或其他工具的管理要求,那麼這是非常典型的任務。 Capistrano是由37signals修補的廣泛使用的解決方案 – Anatoly

回答

4

編號Heroku使部署變得非常容易:它完全由Git管理,您的應用程序是獨立的,因此不存在依賴衝突,而且它對於小規模應用程序是免費的。像EngineYard和DotCloud等其他服務提供類似的服務(雖然EY並不便宜,DotCloud也不像Ruby注重)。

0

根據您的需求,部署可能會很頭疼。如果您在服務器上運行單個應用程序,則可以使用Capistrano(here's a sample of how to do it using Nginx and Unicorn)輕鬆構建它,安裝ruby並設置您的部署環境。

另一方面,如果您的服務器上需要許多不同的應用程序(可能運行在不同的ruby和gem組上),您將有更多的工作,但完全有可能。要同時安裝多個不同的紅寶石而不會相互衝突,您將使用RVM並確保您的所有應用程序依賴項都已定義,您的Rails應用程序必須使用Bundler(或者其他可以執行相同操作的其他項)。

因此,您的要求將使其變得更簡單或不真實,但這不是真的不可能,並且不會讓任何人爲工作提供的工具的數量和質量而瘋狂。

3

有很多工具可以幫助您更輕鬆地進行部署和管理。

Heroku的
的Heroku完全由混帳通過heroku寶石管理。從本質上講,你叫heroku push而不是git push和更改推送到服務器,構建和你的網站會自動更新

捆紮機
捆紮機取得了管理寶石輕鬆了很多,這是超級簡單。

RVM
RVM實際上是在服務器上使用的好工具。它允許你有一臺服務器爲多個Rails應用程序提供服務,每個應用程序都在不同版本的Ruby上,並擁有它自己獨特的Gemset(這意味着你將不會對使用相同ruby版本的多個應用程序產生gem衝突,Gem衝突是!)。

Capistrano的
Capistrano讓你定義你需要在部署過程中發生的一切,讓你開始和一個簡單的命令結束這一切 - cap deploy。它極大地簡化了部署過程。

工頭
如果你的應用需要多個服務啓動(服務器,延遲::工作,獅身人面像等),Foreman是你的工具。它允許您定義您需要的服務,並通過呼叫foreman start一次啓動它們。它可以很好地與Capistrano配合使用,並使您的服務的控制檯輸出更加美觀,易於閱讀。


總體來說,我會說,Rails開發的狀態是幅度比,這是一個幾年前的訂單,但總有改進的餘地。上面提到的項目是一個好的開始,這只是找到最適合您組織的問題。

+0

可能值得指出Heroku的寶石將只能與Heroku的託管服務一起使用,而列出的其他工具則獨立於託管服務提供商。 –

+0

這不完全準確。你可以使用'git push heroku master'或類似的方式推送到Heroku,但其他許多命令的形式是'heroku ' – Andrew