К сожалению, в Ruby единственный способ - исправить (sic!) Этих драгоценных камней, чтобы они использовали совместимые зависимости
В общем, при создании сложного программного обеспечения на Ruby и в такой ситуации мы, разработчики Ruby, не можем многого сделать. И это действительно плохо, так как разработка в Ruby должна сосредоточиться и на этой проблеме.
Вместо того, чтобы предоставлять вашему клиенту новые функции или запросы на изменение, нужно жить с так называемым Ruby: «драгоценный ад».
Еще одна важная характеристика "драгоценного ада" заключается в том, что не всегда последний выпуск драгоценного камня является хорошим.
- Зачастую гем не следует политике семантического контроля версий и может вносить значительные изменения в API.
- Зачастую в новой версии gem могут появиться ошибки в ранее работавших функциях.
Другие языки программирования имеют возможность обрабатывать проблемы такого типа. Просто найдите «несколько версий Java одного и того же класса», и вы найдете много ресурсов.
Что я могу предложить для небольших приложений:
- будьте в курсе всех последних выпусков драгоценных камней
Что я могу предложить для более крупных приложений, когда выше не вариант:
разделите ваше приложение на несколько небольших приложений, сервисов.
Это разделит их, сделав риски того, что «драгоценный ад» станет меньше. Если это произойдет, скорее всего, это случится не со всеми.
Также разные приложения могут использовать разные версии гемов.
переключиться на JRuby, где эти проблемы - теоретически - могут быть решены с помощью возможностей Java