根据ruby版本捆绑开发宝石的不同版本
问题描述:
我有一个应用程序取决于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
答
你应该把成群的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
似乎要走的路,只有我没有看到特拉维斯任何选项添加/删除每个生成环境的Bundler组。也许我错过了什么? http://about.travis-ci.org/docs/user/languages/ruby/ – Julik 2013-03-16 12:11:11
http://about.travis-ci.org/docs/user/languages/ruby/#Custom-Bundler-arguments-and- Gemfile-locations – quandrum 2013-03-16 23:52:08
是的,但它并未指定如何将自定义Gemfiles绑定到'.travis.yml'中的自定义rvm红宝石 – Julik 2013-03-17 15:24:55