2013-03-15 70 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

相关问题