Как заставить обновление драгоценного камня с bundler? - PullRequest
20 голосов
/ 26 октября 2011

У меня есть личный мерзавец, на котором размещен драгоценный камень, который мы разработали.Драгоценный камень получил некоторые коммиты, но версия фактически не изменилась.

Как я могу заставить bundler обновить мой драгоценный камень, даже если версия не изменилась?

Я попытался "bundler update mygemname", но он ничего не обновил.

Спасибо

Ответы [ 5 ]

25 голосов
/ 13 декабря 2012

вы также можете поместить git hashref прямо в Gemfile с опцией :ref

gem 'foo', :git => 'git://github.com/foobar/foo.git', :branch => '0.9-beta', :ref => '9af382ed'

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

15 голосов
/ 26 октября 2011

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

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

$ gem uninstall foo
$ bundle update
12 голосов
/ 26 октября 2011

, что не будет работать - опция «force» отсутствует - вам придется изменить файл .gemspec и увеличить номер версии, затем выполнить gem build ... и bundle install

Это важнодля того, чтобы bundler мог прочитать номер версии вашего драгоценного камня, который был представлен в файле .gemspec.Это сбивает с толку не только упаковщика или gem update, но также сбивает с толку людей, если вы забыли обновить номер версии в файле .gemspec.В итоге у них будут лежать гем-файлы, и они не смогут определить, какие они версии, например, какая новее?(конечно, вы можете использовать md5-sum, но здесь дело не в этом).

Лучшее, что можно сделать, это исправить ошибку в файле .gemspec и повторно выпустить гем.

Проверьте исходный код пакета на наличие доступных опций:

Например: bundler-1.0.15/lib/bundler/cli.rb

(поиск desc "install")

9 голосов
/ 23 июня 2016

Начиная с версии 1.11 bundle install есть опция --force, которая будет перезагружать каждый драгоценный камень, даже если он уже установлен.

6 голосов
/ 26 июля 2013

Это не отвечает на точный вопрос выше, но я искал "Как принудительно обновить драгоценный камень в связке" в Google, и это пришло.

Я не пытаюсь принудительно обновитьgem to rubygems.org, а скорее я пытаюсь переустановить gem, который установлен по пути к пакетам в моей локальной системе.В частности, я пытаюсь переустановить драгоценный камень с собственным расширением (nokogiri).

Как я удалил его из моего проекта следующим образом;предполагая, что ваш --path равен vendor/bundle и вы находитесь в корне проекта, запустите:

find vendor/bundle/ruby/2.0.0 -name "*nokogiri*" -depth 2

Убедитесь, что эти файлы / каталоги относятся к nokogiri, а затем удалите их с помощью:

find vendor/bundle/ruby/2.0.0 -name "*nokogiri*" -depth 2 | xargs rm -rf

Теперь вы можете запускать команду установки пакета как обычно:

bundle install --path vendor/bundle

Примечание: Вам, конечно, нужно изменить 2.0.0 выше на вашу версию ruby.ls vendor/bundle/ruby, чтобы узнать, для какой версии пакета установлены гемы.

...