2011-11-19 66 views
1

我只是想弄清楚爲什麼當我創建一個新的rails應用程序時,每次運行初始化腳本時,bundler都會安裝新的gem。我無法找到它是否以及在哪裏檢查新的寶石,任何人都有任何想法。我很確定它檢查更新的寶石,但如果有人可以驗證我的假設,我會感覺好多了,知道我的應用程序不會流氓。rails新總是安裝新的寶石

回答

1

我已經看到了這一點。我最初非常驚慌,但我已經瞭解到,這是因爲您在捆綁時使用的寶石已經在rubygems.org源代碼中發生了變化,並且它們對其他寶石的依賴性發生了變化,在知道它已經看到大量下載的寶石之前,他們只是現有寶石的更新版本。

最小化這個問題的一種方法是爲每個寶石指定版本,但這實際上並不是一種好的方法或實踐,因爲基本上通過鎖定所有通過寶石完成的應用程序來凍結應用程序,並且它們不會向前移動可以很快導致舊的不活動軟件。然而,對於也將被移動並且版本控制被嚴格地控制和測試的生產軟件來說,這可能是非常有用的。當然版本可以在版本號的個案(或寶石級)實例上完成。

你可以嘗試做兩個新的軌道應用程序連續(一分鐘內)來測試。

+1

沒錯,兩連勝將證明它 – stephenmurdoch

+0

我可以upvote,;) –

1

當我創建一個新的應用程序,我看到:

.... 
..... 
run bundle install 
Fetching source index for http://rubygems.org/ 
Using rake (0.9.2.2) 
Using multi_json (1.0.3) 
Using activesupport (3.1.2) 
Using builder (3.0.0) 
Using i18n (0.6.0) 
Using activemodel (3.1.2) 
Using erubis (2.7.0) 
Using rack (1.3.5) 
Using rack-cache (1.1) 
Installing sprockets (2.1.1) 
Installing jquery-rails (1.0.18) 
..... 

正如你所看到的,只有兩種寶石被安裝,因爲他們最近已更新

+1

確實。它所做的大部分工作只是解決依賴關係,以便第一次生成Gemfile.lock。它實際上不會安裝任何已安裝的東西,但它可能會解決一些比已安裝的更新的依賴項。 – d11wtq

+1

是的,所以它確實檢查更新!這很好,我不是100%肯定它就是這樣做的,我想確保依賴關係在開發階段之間不會中斷。我想這就是Gemfile頂部的源代碼'http://rubygems.org' – lukecampbell