Bundler не смог найти совместимые версии для gem "bundler":

Завершите нового человека для Ruby и Rails здесь... Пробовали некоторые уроки в прошлом, но об этом. Я пытаюсь следовать книге "Ruby on Rails 3 Tutorial" и попал в блокпост, который мне не удалось найти после поиска здесь и в Google.

Я еще ничего не сделал; только:

rails new first_app

а затем изменил Gemfile sqlite3 на

gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'

Когда я запускаю 'bundle install', я получаю следующее:

Fetching gem metadata from http://rubygems.org/.........
Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 3.0.1) ruby depends on
      bundler (~> 1.0.0) ruby

  Current Bundler version:
    bundler (1.1.3)

This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?

Я попытался удалить пакет с помощью

gem uninstall bundler -v 1.1.3

а затем установить bundler v1.0.0 через

gem install bundler -v 1.0.0

но, похоже, мне достается пакет 1.1.2..

Я просто чувствую, что попал в тупик и больше не могу найти информацию о том, как решить эту проблему.

Любая помощь была бы высоко оценена и вознаграждена обильным количеством бекона...

UPDATE UPDATE UPDATE

Я не смог установить пакет v 1.1.2 для удаления. Наконец, я смог удалить все драгоценные камни, выполнив:

sudo gem list | cut -d" " -f1 > gem_list.txt  
cat gem_list.txt | xargs sudo gem uninstall -aIx  
cat gem_list.txt | xargs sudo gem install

И затем переустановить... Это позволило мне выполнить "установку пакета" и выйти на путь. Спасибо всем за вашу помощь!

Ответ 1

Сначала проверьте ваши версии, чтобы убедиться, что они все текущие:

$ ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux]

$ rails -v          
Rails 3.2.2

$ gem list bundler
*** LOCAL GEMS ***
bundler (1.1.3)

Если вам нужно обновить ruby, вы можете скачать его с https://www.ruby-lang.org или использовать такие инструменты, как ruby-build. Если у вас есть какая-либо версия Ruby 1.9.3, то сейчас это нормально.

Чтобы обновить все ваши драгоценные камни:

gem update --system
gem update

Драгоценный камень может устанавливать драгоценные камни в нескольких разных местах, и они могут мешать друг другу. Существуют системные гемы (обычно устанавливаемые пользователем root или с помощью sudo) и ваши личные гемы пользователя. Мой любимый способ управлять этим с помощью простого инструмента под названием rbenv. Связанный инструмент - rvm. Либо в порядке.

Для вашего первого урока вы можете пропустить, используя номера версий в вашем Gemfile:

- gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
+ gem 'sqlite3-ruby', :require => 'sqlite3'

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

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

Ответ 2

это потому, что камни также установлены в глобальном gemset, и вы можете удалить его, используя:

rvm @global do gem uninstall bundler

но вы также можете использовать другую версию bundler, используя:

gem install bundler -v '~>1.0.0'
bundle _1.0.0_ install

заменить 1.0.0 на версию, которая была установлена ​​(если другая)

Ответ 3

Возможно, на вашем компьютере (и, возможно, в других версиях) установлен пакет 1.1.2 и 1.1.3

использование

gem list bundler

чтобы проверить, какая версия комплекта поставки вы установили.

Затем удалите те, которые вы не хотите с помощью

gem uninstall bundler -v VERSION_NUMBER

Ответ 4

Вы можете использовать последнюю версию Rails 3.0 (3.0.12). Он поддерживает последний комплектщик и не принципиально отличается от 3.0.1.

Ответ 5

Иногда, чтобы решить проблему, упомянутую в заголовке этого вопроса, достаточно удалить Gemfile.lock и запустить bundle update. Я надеюсь, что это будет полезно для кого-то.

Ответ 6

У меня была эта проблема, и источником была спецификация версии для bundler в файле .gemspec:

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

Удаление номера версии решило проблему:

spec.add_development_dependency "bundler"

Ответ 7

Bundler - зависимый жемчуг рельсов, из-за которого вы можете видеть его только в gemfile.lock вместо gemfile.

Для конкретной версии рельсов совместим только ряд драгоценных камней. Я также получил эту ошибку, и я попробовал удалить эту версию грома, которая мне не нужна. Я также попытался установить сильное использование bundle_x.x.x_install, но когда все не сработало, я прямо упомянул камень, определяющий версию, попадающую в диапазон, необходимый для версии rails, которую я использую. Может быть, это не правильный путь, но так все работает для меня.