Начиная с Ruby 2.1.0 политика версий заключалась в том, что изменение версии MINOR
может привести к критическим изменениям API.
Если какой-либо драгоценный камень использует API, которыйизменения, возникнет несовместимость.
Номер версии MINOR
изменился дважды между 2.3.*
и 2.5.*
, так что даже если гем был написан в соответствии с документированным API, есть нет гарантии , что он продолжит работать, если сопровождающий драгоценного камня не предпримет усилий для тестирования драгоценного камня (и при необходимости обновит его).Автоматизированные тестовые наборы очень помогают.
Стандартный способ документирования совместимости версий, который фактически проверяется, - путем предоставления required_ruby_version
в .gemspec
файлах .
ИнтересноЕсли какой-то конкретный гем действительно плохо написан, я думаю, он может сломаться даже между совместимыми версиями Ruby.Это не то, с чем я сталкивался в экосистеме Ruby, но я допустил аналогичную ошибку при написании кода Java (а Java славится обратной совместимостью), где мой собственный код случайно использовал класс, который не былчасть API.Есть много драгоценных камней.Кто знает, что там?:)