2009-09-15 51 views
2

我在Ubuntu上爲我的教會開發Rails應用程序。我們還在Ubuntu上使用託管的VPS。我使用Capistrano來部署定期更新。然而,不可避免地,在我的本地盒子上運行的應用程序在部署到主機後總是會遇到一些問題,很可能是因爲環境不同。哪些Rails部署技術最能克服環境差異?

有哪些做法/技術,以簡化部署。這樣,所測試和工程在當地是一樣可能在主機上運行。 (我已經通過了「供應商的一切」的做法。)

我首先想到的是到本地VPS圖像本身最終將被部署(各種各樣的虛擬設備)內發展/工作。有人在做這個嗎?

其他人做,以儘量減少來自環境的差異導致的問題是什麼?哪些主機提供最佳部署選項?

+0

你能舉出一些你遇到過的問題嗎?您是否將Rails和您的寶石凍結在您的應用程序中? – nfm 2009-09-15 23:13:18

+0

我終於修好了一切,但這是一個12小時的日子(可能是部署專家的1小時工作)。我從RadiantCMS升級(0.6.4到0.8.1),它本身出現在供應商目錄中,並且在其供應商目錄中有Rails。 – Mario 2009-09-17 12:22:30

回答

0

儘可能確保您正在運行的版本完全相同紅寶石,完全相同的版本的Rails的,完全相同的數據庫設置,以及完全相同的一切。現場設置和開發設置之間的差異越大,您可能遇到的問題就越多。

+0

問題的核心與Ruby和RubyGems中的版本差異有關。不幸的是,加載路徑也起了一部分作用。最終,安裝最新版本並沒有幫助,直到舊版本可以被刪除。 – Mario 2009-09-16 12:15:31

1

嘗試建立一個階段的環境,模仿最您可以將作品之一。實際上,我使用了一些我的服務器,創建了一個子域(staged.mydomain.com)來測試這個gem是否在正確的版本上。

我還使用READ-ONLY用戶來測試此舞臺安裝中的實時和真實數據。

這種方法可以幫助我們確保新部署能夠正常工作,事先解決問題。

很高興知道您經常處理哪些類型的問題,試圖找到一種減少外觀的方法。

0

那麼你實際上回答了自己的問題。

如果您無法在生產環境中的臨時環境中進行部署,則應嘗試將其完全鏡像到計算機上。然後你可以通過VMWare等程序測試它。

根據我的經驗,這只是在真正危急的情況下才需要。如果您的Ruby/Rails(您可以在您的環境中指定的gem版本)相同,那麼您不應該在部署Rails應用程序時遇到任何問題。

確實很高興知道遇到什麼樣的問題,所以我們希望能爲您提供更充分的解決方案。

+0

做一些主機可以輕鬆獲取虛擬機的副本嗎?同樣,相同的主機是否可以輕鬆地推送副本?我猜這可能是一個不好的做法,因爲我可能需要停機。 – Mario 2009-09-15 15:02:56

0

請記住,大多數Rails開發人員運行OS X並將其部署到UNIX服務器,因此我們從未遇到任何類型的問題。

raby,rails,mysql等的版本當然應該是一樣的。