почему gem все еще устарел после обновления пакета
Я работаю над драгоценным камнем, и это на github.
Когда я включаю камень в приложение, выполните развертывание capistrano и (на сервере):
bundle outdated
Я вижу:
* authengine (0.0.1 d8baa49 > 0.0.1 de43dfa)
который говорит мне, что доступна более поздняя фиксация. Почему обновление пакета (часть развертывания capistrano) не приводит к более поздней версии? Ограничения версии в Gemfile хост-приложения отсутствуют, и в любом случае у них одинаковый номер версии, только разные коммиты.
Даже если я запишусь на сервер и запусти
bundle update authengine
После этого получается тот же "устаревший" результат.
Что мне здесь не хватает?
Ответы
Ответ 1
Одна вещь, которую я обнаружил, может привести к тому, что другие драгоценные камни в наборе предъявляют требования к драгоценным камням по версии, которые несовместимы. Бундлер пытается примирить их, выбрав варианты драгоценных камней, чтобы их требования могли быть удовлетворены. В результате он спокойно отказывается обновлять драгоценные камни.
Способ проверить это - установить явное требование к версии в вашем Gemfile. Что-то вроде
gem "authengine", "> 0.0.2" #(you'll need to bump the version to make this work)
#or
gem "authengine", :ref => "d8baa49"
Затем запустите
bundle update authengine
Вы должны увидеть что-то вроде этого (это взято из моего конкретного случая):
Bundler не смог найти совместимые версии для gem "json": In Gemfile: chef (> 10.8) ruby зависит от json (<= 1.6.1,> = 1.4.4) ruby
logical-construct (>= 0) ruby depends on
json (1.7.5)
Итак, в моем случае это проблема с явным требованием более новой версии json.
Ответ 2
Каков результат, возвращаемый при запуске bundle update authengine
? Действительно ли это говорит, что он обновил драгоценный камень? Или он игнорирует драгоценный камень?
Вы можете попробовать использовать параметр --source
чтобы указать Bundler на использование репозитория git. Это или ваш
bundle update authengine --source https://github.com/mustardseeddatabase/authengine.git
Кроме того, когда такие неожиданные вещи случаются, мне нравится очищать свой gemlist в целом. Возможно, у вас все еще есть старые версии драгоценных камней, которые не используются в комплекте.
Таким образом, вы можете сделать:
gem list
gem check
gem cleanup
Или выполните полную переустановку
gem uninstall authengine
bundle install
Ответ 3
Автор, Андре Арко, заявил в 2014 году, что:
Репрезентатор Bundler определенно работает, и мы корректируем компромисс между конкретными версиями и быстро решаем на основе отзывов пользователей.
Bundler постоянно не предоставлял новейшую версию каждого драгоценного камня на протяжении всего своего существования, и это приводит к большому количеству открываемых билетов. В большинстве случаев он оказывается результатом того, что Bundler должен выбирать между самой новой версией одного драгоценного камня или другого драгоценного камня, а Bundler выбирает драгоценный камень, который пользователь не заботится о том, чтобы иметь самую новую версию. Вот почему так важно, чтобы ваши требования к версии Gemfile точно отражали ваши фактические требования.
Я признаю, что ваше предположение о том, что Bundler даст вам самую новую версию, в то время показалось действительным, но в документах говорится, что вы получите версию, которая соответствует вашим требованиям, а не последняя. Есть ли где-нибудь, где мы могли бы расширить документы, чтобы было ясно, что самые новые версии всего просто невозможно?