2012-06-13 65 views
0

我正在轉換一些應用程序以使用Bundler,而且我已經看到它說最佳實踐是將Gemfile.lock檢入版本控制。但是我(和團隊中的其他開發人員)在Windows上工作,而在中央開發/測試服務器和生產環境中部署的是Linux。在Windows上創建Gemfile時出現問題,部署到Linux

從我發現的情況來看,似乎不可能將任何實質性的gem用於捆綁在Windows上,並希望Gemfile.lock成功部署到Linux環境。

我們現在正在嘗試的設置是將Gemfile提交到版本控制,然後在部署(使用bundler/capistrano)時執行「bundle install」。這雖然很痛苦(bundler trying to install gems that are already installed locally,安裝時會出現權限問題),我只是想確保我們不會走錯路。

+0

的問題更多的是不是版本Gemfile.lock的是一個很好的決定,不是嗎? – ilasno

回答

1

Bundler允許基於平臺創建組。你嘗試過使用它嗎?我們能夠使用這種方法在Windows和Linux上維護一個不重要的Rails應用程序。

如:

platforms :ruby do 
    linux compatible gems 
end 

platforms :mswin do 
    windows compatible gems 
end 
+0

使用這種方法將允許版本化Gemfile.lock,對吧?但是我想知道Gemfile如何構建(追蹤哪些gem進入每個'平臺'塊),然後'bundle install'可以在任一平臺上執行,它會創建一個Gemfile.lock來覆蓋這兩個平臺? – ilasno

+0

是的,這將允許您對Gemfile.lock進行版本化。我不知道血淋淋的細節,但它只會生成一個Gemfile.lock,並且基於你當前的任何平臺,確保安裝這些寶石。 – zsquare

+0

嘗試這條路線,但我覺得我失去了明顯的東西。例如,對於'nokogiri'寶石,有一個用於Windows的不同版本('nokogiri(1.4.3.1-x86-mingw32)'是Gemfile.lock中顯示的),但是使用'platforms'技術只會導致在兩個平臺組中列出'nokogiri',Windows版本是'vendor/cache'中存儲的內容,以及'您的供應商/緩存目錄中似乎缺少某些寶石。 ..在部署的失敗輸出中找不到nokogiri-1.4.3.1。我是否需要'捆綁包'這兩個平臺? – ilasno