2011-06-10 135 views
0

我有一個應用程序,其中我的測試通過軌3.0.6。我已經確定了一個git commit,其中唯一的變化就是我將Gemfile中的rails版本從3.0.6更改爲3.0.8,並且運行了bundle update。在那之後,我的測試失敗......足夠公平。但是,當我嘗試降級到3.0.6時,我的測試仍然失敗。表明某些內容不適用於降級。我嘗試以下操作如何降級我的導軌版本?

change version in Gemfile from 3.0.8 to 3.0.8 
run bundle update 
rm Gemfile.lock 
rm -rf vendor/bundle/* 
bundle install 

然後,我的測試仍然失敗。我在這裏虧本..我錯過了降級過程的一些東西嗎?

編輯:

我做了一個錯誤的假設,當我在我的Gemfile改變了軌道的版本,沒有別的變化。通過運行

bundle update 

我Gemfile.lock的最終更新我的一些寶石,以他們的新github上的版本,而這些新提交分手的事情。當我指的是工作犯我的Gemfile,一切再次工作

gem "carrierwave", :git => 'https://github.com/jnicklas/carrierwave.git', :ref => "0d2e9ee8706074059cb78f2f85232caf17327952" 
+0

你如何運行測試?嘗試做「捆綁exec耙....」,而不是隻是「耙....」 – Satya 2011-06-10 04:12:17

+0

是,我使用軟件包執行rspec spec/models/mymodel.rb – noli 2011-06-10 04:13:48

+1

你有你的Gemfile.lock簽入git ?如果你升級Rails的時候還有其他的寶石發生了變化嗎? – aNoble 2011-06-10 04:16:58

回答

5

看看RVM (stands for ruby version manager)

this article告訴你如何管理你的寶石(如:每個項目一個單獨的集的寶石)

+0

用於RVM的+1(+1000!)。另外@Noli,在你描述的情況下,通常最好刪除你的Gemfile.lock並執行'bundle install'從頭開始構建它。 – 2011-06-10 09:58:45

+0

謝謝,但我沒有看到RVM在這種情況下如何提供幫助(並且我在這裏使用了一個項目.rvmrc文件)。我的問題是,一個創業板改變了,因爲我在我的Gemfile中引用了github上的HEAD,而不是特定的提交。 – noli 2011-06-10 13:00:47

+0

如果你100%確定你的代碼是有效的(所以這真的是rails的錯誤,從「scratch」開始做一個新的項目git克隆,更改Gemfile並確保你在一個乾淨的gemset中(形式爲rvm,by用內容創建一個乾淨的.rvmrc rvm --create use default @ PROJECTNAME>/dev/null – 2011-06-11 06:03:36