Использование новейшей версии gem независимо от источника

StackOverflow https://stackoverflow.com/questions/1115065

  •  12-09-2019
  •  | 
  •  

Вопрос

Могу ли я попросить ruby или rubygems использовать последнюю версию gem независимо от ее источника?

Как упоминалось в обновлении к этот вопрос, оказывается, что ruby использует более старый github gem (hmcgowan-roo 1.3.5) поверх более нового rubyforge gem, который был установлен совсем недавно (roo 1.3.6).

Мое подозрение заключается в том, что magic pixy (либо ruby, либо rubygems) смотрит под "h", прежде чем искать под "r".

Я могу заставить использовать rubyforge, выполнив

gem "roo"

но можно ли сообщить ruby / rubygems, что я рад использовать либо hmcgowan-roo, либо roo, но мне нужна последняя версия?

Это было полезно?

Решение

Нет, к сожалению, это невозможно.Что касается RubyGems, то это не один и тот же gem, поэтому RubyGems не может автоматически определить, какая версия является последней.В целях паранойи строку require следует считать недетерминированной, если нет вызова метода gem и у вас установлено несколько версий одной и той же библиотеки.

В общем, вы хотите, чтобы ваши вызовы метода gem в любом случае находились в другом месте, чем требуется (это позволяет загружать файлы с задержкой), поэтому вполне разумно иметь часто обновляемый файл, который просто выполняет кучу вызовов метода gem, чтобы убедиться, что у вас есть правильная версия всего.Кроме того, в рабочей среде вы обычно не хотите выполнять команду "дайте мне последнюю версию", потому что последняя версия, возможно, изменила свой API или переименовала некоторые методы или что-то подобное, и если вы не протестировали ее, вы не знаете, сломается ли она.Вы всегда должны быть уверены, что используете конкретную, известную для работы версию каждой сторонней библиотеки.

Как автор библиотеки, я обычно предупреждаю людей об одной или двух версиях, если собираюсь внести изменения, которые нарушат прежнее использование API.Однако иногда люди какое-то время не обновляют, и их это застает врасплох.К счастью, большинство людей осторожны и все инсценируют.Не будьте тем парнем, который обновляет библиотеки непосредственно в рабочей среде, не тестируя их.:-)

Другие советы

Возможно, вы могли бы использовать метод gem, чтобы указать, какой из них вам нужен.

Руководство RubyGems - Глава 4

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top