1. Когда я еще был рубистом и упарывался на написание тестов, то для своего гема у меня была какая-то дикая матрица тестирования, не только под версию руби, но даже под операционку. Вот тот самый конфиг для матрицы.
https://github.com/TheRole/DummyApp/blob/master/.travis.yml2. Для того, чтобы подключать разные версии зависимостей в Gemfile приложения, которое ты тестируешь вообще была (и есть) такая штука
https://github.com/thoughtbot/appraisal#readmeНо я решил не заморачиваться на нее.
3. Для разных версий рельса и версий руби в Гемфайл я пихал такое
https://github.com/TheRole/DummyApp/blob/master/GemfileИ имел еще ряд подключаемых гемфайлов, в зависимости от переданных параметров
https://github.com/TheRole/DummyApp/tree/master/gemfiles4. Строго говоря, разные версии зависимостей могут вполне потребовать условных конструкций в коде и специфических правок. Например вот тут.
https://github.com/TheRole/DummyApp/blob/master/app/controllers/application_controller.rb#L3Вообще у меня были случаи, когда некоторые методы руби были не доступны в старых версиях и мне приходилось патчить код и добавлять эти методы самому.
5. При написании спеков ты можешь свободно использовать фильтры для конкретных версий чего угодно. Или дажи написать свои кастомные фильтры, которые будут запускать тесты для одних случаев и не запускать для других
https://github.com/rspec/rspec-core/issues/1484