2013-03-15 99 views
0

我有一個應用程序取決於flexmock。出於多種原因,我希望此應用能夠在1.8.7至2.0.0以及更高版本上運行,到目前爲止它的運行情況非常好。由於該應用程序有一個巨大的測試套件,因此很容易保持兼容性。根據ruby版本捆綁開發寶石的不同版本

唯一的問題是flexmock。舊版本的flexmock中存在一個錯誤,我必須使用monkeypatch來解決這個問題。新版本的flexmock修復了這個bug,但它只適用於1.9.3。我使用的舊版本的flexmock也給2.0.0上的測試失敗,因爲它錯誤地記錄了像Time這樣的類上的方法調用次數。

是否有一個神奇的Bundler咒語,我可以用它來修改我的開發依賴關係,以便它們爲我運行的每個Ruby版本提供相關版本?特別是爲了讓它在Travis-Ci上運行乾淨?

我沒有版本控制Gemfile.lock

回答

0

你應該把成羣的flexmock版本,然後當你bundle install可以排除你不想要的羣體,所以:

group :ruby18 do 
    gem 'flexmock', ~> oldversion 
end 

groups :ruby19 do 
    gem 'flexmock', ~> newversion 
end 

和那麼當你在1.8中運行應用程序時,你可以bundle install --without ruby19,反之亦然,對於Ruby 1.9+。看到更多在http://gembundler.com/v1.3/groups.html

+0

似乎要走的路,只有我沒有看到特拉維斯任何選項添加/刪除每個生成環境的Bundler組。也許我錯過了什麼? http://about.travis-ci.org/docs/user/languages/ruby/ – Julik 2013-03-16 12:11:11

+0

http://about.travis-ci.org/docs/user/languages/ruby/#Custom-Bundler-arguments-and- Gemfile-locations – quandrum 2013-03-16 23:52:08

+0

是的,但它並未指定如何將自定義Gemfiles綁定到'.travis.yml'中的自定義rvm紅寶石 – Julik 2013-03-17 15:24:55