Як `встановити пакет`, коли для вашого Gemfile потрібна старіша версія пакета?


78

Я в старому проекті Rails, який має Gemfile. Я спробував додати дорогоцінний камінь до Gemfile, bundle installале отримав помилку:

Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 3.0.0) ruby depends on
      bundler (~> 1.0.0) ruby

  Current Bundler version:
    bundler (1.1.5)

This Gemfile requires a different version of Bundler.

Версія Rails, яку вона використовує, вимагає пакету ~> 1.0.0, але я встановив 1.1.5 і використовую його для інших своїх проектів. Зазвичай я б використовував, bundle exec ...але оскільки мова йде про пакет, це трохи складніше, ніж це. Як я можу додати дорогоцінний камінь до свого Gemfile і запустити bundle install, використовуючи потрібну йому версію пакета?


Я думаю, спочатку видаліть пакувач 1.1.5. Потім встановіть 1.0.0. Це виправить. Можливо, є краще рішення?
halfelf

Відповіді:


148

Спочатку потрібно встановити відповідну версію пакета:

% gem install bundler -v '~> 1.0.0'
Successfully installed bundler-1.0.22

Потім змусіть rubygems використовувати потрібну версію ( див. Цю публікацію ):

% bundle _1.0.22_ install

Чому, біса, цього немає в документах Bundler?!? Дякую, витративши більше годин, ніж я хочу визнати, ваша відповідь нарешті пояснила, що мені потрібно.
MikeSchinkel

2
Щоб отримати точну версію в ці дні, яку ви захочете використатиgem install bundler -v '=1.16.0'
Нік Швадерер,

9
Зараз не працює. Він не може змусити рубіми використовувати ту версію, яка bundle _1.0.22_ installвказана
Алекчжоу,

2

Повідомлення про помилку In Gemfile: bundler (~> 1.16)трохи неточне, оскільки вимога до номера версії може надходити з інших місць, наприклад, із .gemspecфайлу, що було для мене:

spec.add_development_dependency "bundler", "~> 1.16"

Видалення номера версії з .gemspecфайлу вирішило проблему для мене:

spec.add_development_dependency "bundler"

0

У мене була така ж проблема з macOS Mojave. Я встановив іншу версію камені пакета та видалив поточну версію.

gem install bundler -i '2.0.1'

gem uninstall bundler

Потім мені надається можливість вибрати версію для видалення, і я вибираю версію, яка створює проблему.


Не обов’язково рекомендований спосіб зробити це. Я спробую спершу прийняту відповідь, можливо, у вас є інші дорогоцінні камені, залежно від пізніших версій, і ви можете запускати їх окремо.
Майкл Елліот
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.