根据ruby版本捆绑不同版本的开发gem

时间:2013-03-15 22:55:22

标签: ruby bundler versioning

我有一个依赖于flexmock的应用程序。出于多种原因,我希望这个应用程序在1.8.7到2.0.0及更高版本上运行,到目前为止它运行得非常好。由于该应用程序具有庞大的测试套件,因此很容易保持兼容性。

唯一的问题是flexmock。旧版本的flexmock中存在一个错误,我必须使用monkeypatch进行处理。较新版本的flexmock修复了这个bug,但它只适用于1.9.3。我使用的旧版flexmock也在2.0.0上提供了测试失败,因为它错误地记录了像Time这样的类的方法调用次数。

我是否有一个神奇的Bundler咒语可用于修改我的开发依赖项,以便它们为我运行的每个Ruby版本提供相关版本?特别是让它在Travis-Ci上运行干净?

我没有版本控制Gemfile.lock

1 个答案:

答案 0 :(得分: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

了解更多信息