我一直在使用Capistrano將幾個Rails應用程序部署到單個EC2實例。這些應用程序都使用Apache + Passenger。部署階段大多數形式如下:通過多個部署階段維護Rails環境
- 提取代碼,在主應用程序目錄的「releases/[timestamp]」子目錄中放置。
- 爲上演發佈
運行打捆 - 運行遷移的上演發佈
- 運行資產編譯( 「資產:預編譯」)耙任務上演發佈
- 重啓delayed_job任務隊列處理守護進程和任何其他後臺進程
- 將分階段發佈符號鏈接到「當前」(乘客Web根目錄)
- 重啓乘客(通過觸摸應用目錄中的「tmp/restart」)
這是一個非常標準的Rails部署過程。我注意到它的一個巨大瓶頸是爲每個需要它的任務加載rails環境。對於我的大型應用程序之一,環境加載需要大約40秒或更長時間,對於需要rails環境的n個任務(運行bundler,migrations,資產編譯,delayed_job守護程序),重複執行n次。原諒如果這是一個天真的問題,但我想知道是否有一種簡單的方法來爲所有這些任務只加載一次環境(最好比將所有這些任務/作業的實現整合到加載的單個rake任務環境)。
[看我的回答] –