2014-01-24 3 views
1

Я играю с шеф-поваром. И когда я проверяю его зависимости, выясняется, что это зависит от нескольких версий некоторых драгоценных камней, таких как json, chef-zero и т. Д.Зависимость от другой версии некоторых драгоценных камней

Мой вопрос: почему камень зависит от нескольких версий одного и того же драгоценного камня? Я имею в виду, не должно быть так, что я устанавливаю последнюю версию шеф-повара и удовлетворяет все зависимости шеф-повара? Кроме того, можно ли каким-либо образом внести изменения, так что шеф-повар зависит только от одной версии шеф-повара?

ответ

3

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

Простым примером являются такие драгоценные камни, как «PDFKit» или «wicked_pdf». Оба являются отличными камнями для печати html-страницы в pdf .. но они используют ту же самую зависимость, то есть «wkhtmltopdf-binary». Поскольку более поздняя версия уже была доступна, на самом деле не было бы хорошей идеей для авторов этих плагинов написать эту часть кода. Это разумнее.

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

+0

Звучит здорово. Но я хочу знать, почему жемчужина зависит от нескольких версий одного и того же драгоценного камня. Я имею в виду, было бы лучше, если бы мне пришлось установить только один камень, вместо установки разных версий? – Pensu

+1

посмотрите http://stackoverflow.com/questions/6132479/2-gems-need-different-versions-of-the-same-dependency, может быть, это поможет! – shivam

0

Ну, это не совсем так. Вам не нужно устанавливать несколько версий одного и того же драгоценного камня. Как я понимаю, вы смущены зависимостей Chef 11.8.2 следующего типа:

chef-zero >= 1.6.2, ~> 1.6 
diff-lcs >= 1.2.4, ~> 1.2 

В этом случае необходимо установить версию, которая поддерживает оба ограничения. Например, для chef-zero это будет любая версия выше 1.6.2 (первое ограничение), но не более 2.0 (второе ограничение). (Gem dependencies versions meaning)

Это даже проще с JSON

json <= 1.7.7, >= 1.4.4 

Установленная версия должна быть между 1.4.4 и 1.7.7.

Смежные вопросы