При запуске rake
я получаю такую ошибку:
Вы уже активировали рейк 0.9.2, но ваш Gemfile требует рейка 0.8.7. Рассмотрите возможность использования пакета exec.
Кажется, bundle exec rake
что использование вместо просто rake
работает, но это лучший способ исправить это?
Ответы:
Использование
bundle exec
- правильный способ сделать это.По сути, вы обновили rake до версии 0.9.2, которая теперь конфликтует с версией, указанной в вашем Gemfile. Ранее
rake
ваша последняя версия соответствовала версии в вашем Gemfile, поэтому вы не получали никаких предупреждений при простом использованииrake
.Иегуда Кац (один из первых разработчиков Bundler) объясняет все это в своем блоге .
Чтобы не печатать
bundle exec ...
постоянно, вы можете настроить псевдоним или функцию в своей оболочке для команд, которые вы обычно используете с Bundler. Например, вот что я использую для рейка:источник
Если у вас есть причина сохранить текущую версию rake (или какой-либо другой драгоценный камень, вызывающий проблему), matt правильный, лучший способ сделать это - запустить
bundle exec
. При этом используется версия, указанная в вашем Gemfile, вместо использования самой новой версии установленного вами гема. (у nathan.f77 есть хорошее решение ниже, если вы не хотите печататьbundle exec
каждый раз, когда запускаете рейк)В противном случае, если нет причин не обновлять рейк, можно запустить
Это фактически обновит ваш Gemfile.lock, чтобы использовать новейшую версию rake вместо того, чтобы запускать
bundle exec
каждый раз.Примечание: если вы запустите именно
bundle update
это, обновятся все драгоценные камни в вашем Gemfile, а не просто грабли, что, вероятно, не то, что вы хотите, потому что, если что-то сломается в вашем приложении, вы не узнаете, какое обновление драгоценного камня вызвало это.Менее рекомендуемый способ сохранить старую версию без необходимости использования
bundle exec
- это удалить новые версии rake.Это работает, но если вы работаете с несколькими приложениями, которые используют разные версии rake, это может быть проблемой, потому что вам постоянно придется устанавливать и удалять разные версии.
источник
gem install rake
. Потомgem uninstall rake
и выбрал 0.9.2.bundle update
также обновит все драгоценные камни без указанных версий до последней доступной версии. Возможно, это не то, что вам нужно.bundle update rake
было бы больше прецес.public_suffix
вместоrake
. Кbundle update public_suffix
сожалению, бег не дает никакого эффекта.Пытаться
bundle clean --force
Удаляет все системные жемчужины, не входящие в этот комплект.
источник
В прошлый раз, когда это случилось со мной, я обновил все свои драгоценные камни. Я сделал,
gem uninstall rake
и он перечислил варианты версии. Я выбрал более новую, и тогда мне больше не пришлось пользоватьсяbundle exec
.По сути, если вы используете,
bundle exec
он использует ту версию гема, которая установлена в вашем пакете, то есть то, что находится в Gemfile. Безbundle exec
него используется версия, установленная в вашей системе по умолчанию.источник
Ooh! Статья Каца превосходна!
Мне больше всего нравится это решение:
так что теперь вы можете ввести
Для кого-то вроде меня, который занимается разработкой приложений 2.3 и 3.0.9, я чувствую себя намного лучше.
источник
bundle exec
правильно, но вы не хотите вводить его каждый раз.Вы можете поместить это в свой .bashrc:
источник
Другой способ не вводить его каждый раз - использовать Makefile, например
источник