2013-03-15 4 views
0

У меня есть приложение, которое зависит от flexmock. По ряду причин я хочу, чтобы это приложение работало с 1.8.7 до 2.0.0 и выше, пока оно работало очень хорошо. Поскольку приложение имеет огромный набор тестов, легко поддерживать совместимость.Объединение различных версий драгоценных камней разработки в зависимости от версии ruby ​​

Единственная проблема - flexmock. В старой версии flexmock есть ошибка, с которой мне приходится работать с monkeypatch. Более новая версия flexmock исправляет ошибку, но она работает только с 1.9.3. Более старая версия flexmock, которую я использую, также дает ошибки тестирования на 2.0.0, поскольку она неправильно записывает количество вызовов методов в таких классах, как Time.

Есть ли волшебное заклинание Бундлера, которое я могу использовать для изменения зависимостей разработки, чтобы они выходили с соответствующими версиями для каждой версии 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

Кажется, что это путь, только я не вижу никаких вариантов на Travis для добавления/удаления групп Bundler в каждой среде сборки. Может, я что-то пропустил? http://about.travis-ci.org/docs/user/languages/ruby/ – Julik

+0

http://about.travis-ci.org/docs/user/languages/ruby/#Custom-Bundler-arguments-and- Gemfile-places – quandrum

+0

Да, но он не указывает, как связать пользовательские Gemfiles с обычными рубинами rvm в '.travis.yml' – Julik