Как заставить обновление gem с bundler?
У меня есть частный git хостинг драгоценный камень, который мы разработали. Драгоценный камень получил некоторые коммиты, но версия фактически не изменилась.
Как я могу заставить bundler обновить мой драгоценный камень, даже если версия не изменилась?
Я попробовал "bundler update mygemname", но он ничего не обновил.
спасибо
5 ответов
это не будет работать - нет опции "force" - вам придется изменить свой .gemspec файл и увеличить номер версии, а затем сделать gem build ...
и bundle install
очень важно, чтобы bundler мог прочитать номер версии из вашего драгоценного камня, который был введен в . Это сбивает с толку не только bundler или gem update
, но и путаете людей, если вы забыли обновить номер версии в .файл gemspec. Они закончили бы тем, что gem-файлы лежали вокруг, и не быть в состоянии сказать, какие версии они, например, какой из них новее? (конечно, вы можете использовать md5-sum, но это не относится к делу).
лучшее, что можно сделать, чтобы исправить ошибку в .gemspec файл, и повторно выпустить камень.
Проверьте исходный код bundler для доступных опций:
например: bundler-1.0.15/lib/bundler/cli.rb
(ищите desc "install"
)
вы также можете поместить git hashref прямо в Gemfile с помощью :ref
опции
gem 'foo', :git => 'git://github.com/foobar/foo.git', :branch => '0.9-beta', :ref => '9af382ed'
особенно полезно, если у вас нет контроля над указанным драгоценным камнем, и держит bundler от предоставления вам более новой версии в случае, если есть изменения.
прежде всего, не делайте этого. Если вы измените свой драгоценный камень, вы должны обновить его номер версии. Иначе это просто сбивает с толку.
Если вы действительно хотите сделать это, однако, вы можете применить гигантский молот удаления вашего драгоценного камня первым.
$ gem uninstall foo
$ bundle update
С версии 1.11 bundle install
просто --force
опция, которая будет перезагружать каждый драгоценный камень, даже если они уже установлены.
это не отвечает на точный вопрос выше, но я искал "Как заставить обновить драгоценный камень в bundler" в Google, и это появилось.
Я не пытаюсь заставить обновить драгоценный камень rubygems.org но скорее я пытаюсь переустановить драгоценный камень, который установлен на путь пакета в моей локальной системе. В частности, я пытаюсь переустановить gem с собственным расширением (nokogiri).
как я удалил его из моего проекта следующим образом; предполагая, что ваш --path
is 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
чтобы увидеть, какая версия bundler установил драгоценные камни для.