Почему так много драгоценных камней дергаются и что вы делаете с зависимостями?

Сегодня я столкнулся с ситуацией, когда драгоценный камень, используемый в приложении, которое я поддерживаю, был дергался.

Раньше я не видел драгоценного камня, хотя я слышал об этом и думал, что это плохая практика.

Я пробовал обновлять драгоценные камни, но приложение запускается с ошибкой при использовании предыдущих или более старых версий.

Видя, как драгоценные камни свободно размещаются и, возможно, используются приложениями, какая логика их дергает? Как вы управляете драгоценными камнями, которые были дернуты?

Ответ 1

Для каждого драгоценного камня, который вы решили использовать в своем проекте, у вас должна быть идеология альтернативы (либо другого драгоценного камня, либо собственной реализации). Я вижу людей, использующих драгоценный камень, навязчиво, не заботясь о его качестве, авторе, частоте обновления. Опасно быть слепо в зависимости от одного драгоценного камня, и решение добавить еще одну строку в Gemfile не следует воспринимать легкомысленно.

Что касается дергавшихся камней, если даже авторы удаляют драгоценные камни из interwebz, вы, вероятно, должны думать о том, чтобы делать то же самое с ним в вашем проекте. Это или если вы действительно любите драгоценный камень, принимаете вилку, даете кредиты и продолжаете ее развивать.:)

Ответ 2

Rubygem doc предполагает, что yanking здесь:

  • исправить случайные нажатия неполных версий
  • запретить пользователям неуловимо вытаскивать драгоценный камень с известными проблемами безопасности.

Мне никогда не приходилось управлять таким случаем, но я вижу три варианта:

  • обновить драгоценный камень, если существует более поздняя версия
  • загрузите драгоценный камень (док говорит, что драгоценный камень все еще доступен для загрузки, если только он не был полностью удален после процесса обсуждения по уважительным причинам) и укажите локальную версию в вашем gemfile
  • реорганизуйте свой код вокруг другого драгоценного камня или специального кода

В целом, кажется, что вытаскивание драгоценного камня - это крайняя мера, всегда сделанная по уважительным причинам, поэтому вы должны предпочесть модернизацию/рефакторинг с использованием потенциально опасного или устаревшего драгоценного камня... Думаю.