幾年前,部署Rails應用程序似乎相當棘手。然而,從我最近閱讀的內容看來,這個領域的鐵軌已經有了很大的改進。但是,考慮到各種版本的Ruby和gem依賴性問題,部署仍然很頭疼(例如,heroku或引擎工廠)?Rails部署的當前狀態
回答
編號Heroku使部署變得非常容易:它完全由Git管理,您的應用程序是獨立的,因此不存在依賴衝突,而且它對於小規模應用程序是免費的。像EngineYard和DotCloud等其他服務提供類似的服務(雖然EY並不便宜,DotCloud也不像Ruby注重)。
根據您的需求,部署可能會很頭疼。如果您在服務器上運行單個應用程序,則可以使用Capistrano(here's a sample of how to do it using Nginx and Unicorn)輕鬆構建它,安裝ruby並設置您的部署環境。
另一方面,如果您的服務器上需要許多不同的應用程序(可能運行在不同的ruby和gem組上),您將有更多的工作,但完全有可能。要同時安裝多個不同的紅寶石而不會相互衝突,您將使用RVM並確保您的所有應用程序依賴項都已定義,您的Rails應用程序必須使用Bundler(或者其他可以執行相同操作的其他項)。
因此,您的要求將使其變得更簡單或不真實,但這不是真的不可能,並且不會讓任何人爲工作提供的工具的數量和質量而瘋狂。
有很多工具可以幫助您更輕鬆地進行部署和管理。
Heroku的
的Heroku完全由混帳通過heroku
寶石管理。從本質上講,你叫heroku push
而不是git push
和更改推送到服務器,構建和你的網站會自動更新
捆紮機
捆紮機取得了管理寶石輕鬆了很多,這是超級簡單。
RVM
RVM實際上是在服務器上使用的好工具。它允許你有一臺服務器爲多個Rails應用程序提供服務,每個應用程序都在不同版本的Ruby上,並擁有它自己獨特的Gemset(這意味着你將不會對使用相同ruby版本的多個應用程序產生gem衝突,Gem衝突是!!)。
Capistrano的
Capistrano讓你定義你需要在部署過程中發生的一切,讓你開始和一個簡單的命令結束這一切 - cap deploy
。它極大地簡化了部署過程。
工頭
如果你的應用需要多個服務啓動(服務器,延遲::工作,獅身人面像等),Foreman是你的工具。它允許您定義您需要的服務,並通過呼叫foreman start
一次啓動它們。它可以很好地與Capistrano配合使用,並使您的服務的控制檯輸出更加美觀,易於閱讀。
總體來說,我會說,Rails開發的狀態是幅度比,這是一個幾年前的訂單,但總有改進的餘地。上面提到的項目是一個好的開始,這只是找到最適合您組織的問題。
可能值得指出Heroku的寶石將只能與Heroku的託管服務一起使用,而列出的其他工具則獨立於託管服務提供商。 –
這不完全準確。你可以使用'git push heroku master'或類似的方式推送到Heroku,但其他許多命令的形式是'heroku
- 1. Kubectl部署狀態,凍結
- 2. dbslayer的當前狀態?
- 3. Page Curl的當前狀態
- 4. Upshot.js的當前狀態
- 5. 「持久狀態」與「當前狀態」
- 6. 當前服務器狀態
- 7. UML當前技術狀態
- 8. 導航欄當前狀態
- 9. stateparms附帶當前狀態
- 10. 當前MS表面狀態
- 11. 從當前狀態動畫
- 12. P4V保存當前狀態
- 13. 部署Rails應用程序後Heroku狀態500錯誤
- 14. OSGi部署管理服務的狀態
- 15. Rails 4 - Statesman Gem - 定義當前狀態的方法
- 16. Capistrano的3不會創建「當前」目錄,當我部署我的Rails項目
- 17. Capistrano - 找到當前部署的版本
- 18. 從當前狀態到當前狀態,$ state.go是否觸發相關事件?
- 19. 在macvim的狀態行中顯示`expandtab`的當前狀態
- 20. 保存我的ProgressBar的當前狀態
- 21. HTTP狀態[500] - Servlet.init()部署戰爭
- 22. 查詢狀態機中可能的未來狀態的當前狀態
- 23. 使用perforce捕獲外部目錄的當前狀態
- 24. 雙態按鈕:顯示當前狀態或下一個狀態?
- 25. 當部署sharepoint事件接收器時,「操作無效,由於對象的當前狀態」
- 26. UI-路由器$狀態$當前包裝的arbitary狀態
- 27. 當前的Java連接池狀態
- 28. GWT的當前狀態是什麼?
- 29. 獲取當前的iCloud同步狀態
- 30. Android上的SVG支持,當前狀態
幾年前,部署過程中一切都很好,上次沒有太多變化。如果您的要求符合capistrano或其他工具的管理要求,那麼這是非常典型的任務。 Capistrano是由37signals修補的廣泛使用的解決方案 – Anatoly