Как исправить "Ваша версия Ruby - 1.9.3, но ваш Gemfile указан 2.0.0"

Я создал проект Ruby, но при запуске bundle update и bundle install он возвращает ошибку:

Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0

Его образ: http://i.imgur.com/dZMhI11.png?1

Мой gemfile:

ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0

gem 'rails', '4.0.0'

group :development do
    gem 'sqlite3', '1.3.8'
end

gem 'sass-rails', '4.0.0'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.0'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :doc do
    gem 'sdoc', '0.3.20', require: false
end

Ответ 1

Если вы запустите ruby -v вы увидите, что вы установили Ruby 1.9.3, но первая строка в вашем Gemfile указывает, что вы хотите использовать Ruby 2.0.0.

Вам следует либо установить Ruby 2.0.0, либо изменить первую строку в вашем Gemfile, чтобы указать Ruby 1.9.3.

образец Gemfile:

source 'https://rubygems.org'
ruby "1.9.3"

gem 'pry'

gem 'pry-nav'

# Use with command-line debugging, but not RubyMine
#gem 'debugger'

gem 'bundler'

Ответ 2

Я заметил, что это произошло, когда я попытался bundle install со свежим gemset RVM, который еще не включил bundler (поскольку он упал на установку системного пакета, которая ссылалась на систему ruby).

Запуск gem install bundler исправлен для меня.

Ответ 3

Никто из них не работал у меня, но я, наконец, понял это:

spring stop

У меня был проект Rails 4, который использует что-то под названием Spring, чтобы поддерживать среду Rails, работающую в фоновом режиме, для скорости.

Я начал с Spring с Ruby 2.1.1, но потом обновился до 2.1.2 (в Gemfile и .ruby-версии). Моя теория заключается в том, что Spring продолжал работать на 2.1.1 и поэтому вызвал эту ошибку.

Ответ 4

Heroku Toolbelt может вызывать его, если вы используете команду heroku, или, более конкретно, используя bundle exec heroku, чего вы никогда не должны делать. Если вы можете устранить проблему, удалив bundle exec перед вашими вызовами heroku, попробуйте сначала. Если нет, то следуйте указаниям ниже.


Обновление 25 февраля 2017 года:
Heroku Toolbelt переименован в CLI Heroku. См. Эти ссылки для обновленных инструкций по установке/удалению:
https://devcenter.heroku.com/articles/heroku-cli
https://github.com/heroku/cli

Оригинальная почта предоставляется неотредактированным ниже (для устаревших инструкций):


Если вы установили toolbelt Heroku с официального сайта:

В верхней части /usr/bin/heroku он, вероятно, говорит что-то вроде #!/usr/local/heroku/ruby/bin/ruby

Попробуйте запустить /usr/local/heroku/ruby/bin/ruby -v и посмотрите, выводит ли он ruby ​​1.9.3.

https://github.com/heroku/toolbelt/issues/53

› heroku --version
heroku-toolbelt/3.26.1 (x86_64-darwin10.8.0) ruby/1.9.3

Обратите внимание на пункт 1.9.3, указанный в конце.

--- Do НЕ используйте эту страницу и ее упакованный установщик для установки CLI Heroku в OSX:

https://toolbelt.heroku.com/

Поскольку перечисленные технические детали важны:

Клиент командной строки heroku будет установлен в /usr/local/heroku и/usr/local/heroku/bin будет добавлен в ваш PATH.

Это вредно, потому что RVM сделает следующее:

› rvm current
ruby-2.1.1

› heroku --version
heroku-toolbelt/3.26.1 (x86_64-darwin10.8.0) ruby/1.9.3

Существует такая раздражающая версия 1.9.3, даже когда я указал другую версию Ruby с RVM.

Удалите набор инструментов Heroku

Нет официальной деинсталляции для OSX, напишите +1 здесь, если вы думаете, что должно быть одно: https://github.com/heroku/toolbelt/issues/8

Удалите вручную (перейдите в корзину, чтобы сохранить резервную копию, если что-то не получается):

mv ~/.heroku ~/.Trash
sudo mv /usr/local/heroku ~/.Trash
sudo mv /usr/bin/heroku ~/.Trash

Установите набор инструментов Heroku с помощью homebrew вместо

Потому что он правильно привязывает текущую версию RVM к инструменту Heroku. Run:

brew install heroku-toolbelt

Инструмент Heroku toolbelt будет установлен только в этом месте:

/usr/local/Cellar/heroku-toolbelt/3.21.4

(Вы также можете легко удалить его с помощью brew uninstall heroku-toolbelt, если хотите.)

Тестирование установки:

› rvm current
[email protected]

› rvm list

rvm rubies

=* ruby-2.0.0-head [ x86_64 ]
   ruby-2.1-head [ x86_64 ]
   ruby-2.1.1 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

› rvm use ruby-2.1.1
Using /Users/Username/.rvm/gems/ruby-2.1.1

› rvm current
ruby-2.1.1

› heroku --version
heroku-toolbelt/3.26.1 (x86_64-darwin12.0) ruby/2.1.1
You have no installed plugins.

› rvm use ruby-2.0.0-head
Using /Users/Username/.rvm/gems/ruby-2.0.0-head

› heroku --version
heroku-toolbelt/3.26.1 (x86_64-darwin13.4.0) ruby/2.0.0
You have no installed plugins.

Обратите внимание, что теперь он говорит 2.0.0 в конце этой последней команды. Теперь вы запускаете клиент Heroku с любой rvm current рубиновой версией, указанной в RVM.

Ответ 5

Если вы наберете rvm list и отобразите версию Ruby версии 2.0 в качестве текущей версии, и вы все еще получаете эту ошибку, набрав rvm use (ruby version) исправил эту проблему для меня.

Ответ 6

"У меня была такая же проблема с использованием rbenv, установленной через brew.

Я не мог понять это, попробовал все вышеперечисленное, я перешел на rvm, который решил его.

В ответ на этот пост вы должны убедиться, что вы запустите rbenv rehash после установки рубиновой версии. Это, похоже, сработало для меня, когда я столкнулся с одной и той же проблемой.

Ответ 7

Если вы используете менеджер версий Ruby, такой как RVM или rbenv, затем создайте в каталоге верхнего уровня вашего проекта файл с именем .ruby-version, содержащий версию spec'd в вашем Gemfile, например:

2.0.0

По-видимому, это вариант cross- {rbenv,rvm} для спецификации версии.

Ответ 8

В моем случае я использовал rvm get head для обновления версии RVM, и она сработала.

Ответ 9

ruby-switch был удален с ubuntu 14.04 и выше. Я оставлю этот ответ для потомков, но вам, вероятно, нужно другое решение. Проверьте установить ruby ​​2.0 без ruby-switch?".


Если вы установили новую версию Ruby, но все еще получаете ошибки в отношении несоответствия Gemfile, вам, вероятно, нужно будет использовать ruby-switch, чтобы установить новую версию Ruby как по умолчанию:

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install ruby2.1 ruby2.1-dev
sudo ruby-switch --set ruby2.1
sudo gem install bundler

Ответ 10

Я обнаружил, что переустановка RVM сделала трюк, когда эта ошибка возникла, поскольку любое другое предложение не сработало.

Ответ 11

У меня была эта проблема после обновления версий Ruby через rbenv. Я попробовал команду spring stop, указанную выше.

Когда я запустил это сообщение, у меня появилось другое сообщение о том, что я запускаю gem pristine --all

Предупреждение: запуск уникальной жемчужины - все, чтобы восстановить установленную gemspecs улучшит производительность запуска Spring.

Итак, я запустил эту команду, а затем все прошло нормально.

Ответ 12

У меня была такая же проблема с использованием rbenv, установленной через Homebrew.

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

Ответ 13

Я обнаружил, что мой рейк или рельсы script в каталоге bin использовал другую версию ruby. Я сравнил два сценария рейка с двух серверов (производство и разработка), и он показал мне, что они используют разные версии ruby. Поэтому мне пришлось обновить соответствующим образом.

1c1
< #!/usr/bin/env ruby
---
> #!/usr/bin/env ruby1.9.1

Ответ 14

Наткнулся на эту ошибку при использовании пассажирского самоцвета. Так как я установил этот гем с доступом sudo, он взял стандартную версию ruby. Я полагаю, что причина может быть в том, что ruby был установлен без доступа sudo в моей системе, а пассажир не знал, какая версия ruby будет использоваться.

Однако установка gem и его модуля apache без доступа sudo устранила проблему.

Ответ 15

Предложение для любого, кто найдет эту проблему, и ни одно из типичных решений не решит эту проблему для вас, проверьте, есть ли у вас более одного менеджера версий ruby. Существует несколько менеджеров версий, и некоторые скрипты программного обеспечения или установки будут использовать разные. Я знаю о rbenv, rvm, asdf и, по крайней мере, еще одном, имя которого я не помню. Я установил asdf другим инструментом, не осознавая, что это произошло, и это вызвало несоответствие указанной версии.

Для этого выполните команду which ruby и внимательно посмотрите на путь. Если это не тот менеджер версий, который вы ожидаете, вы страдаете от этой проблемы. Самое простое решение - использовать тот, который вам нужен, и избавиться от другого. Если по какой-то причине вам нужно сохранить оба, вам, вероятно, придется изменить порядок путей в вашем файле .rc оболочки.

Ответ 16

У меня была эта точная проблема - всего через несколько секунд после того, как Mac OSX Terminal подтвердил, что Ruby 2.0.0 был успешно установлен.

Mac OSX поставляется с устаревшей версией Ruby, уже установленной и установленной как Ruby по умолчанию. Чтобы исправить эту проблему, вы можете установить "JewelryBox", очаровательное и прекрасное приложение, которое дает вам графический интерфейс для просмотра нескольких рубинов и управления ими (полезно, если на одном Mac есть несколько сред разработчиков). Вы можете использовать его, чтобы отменить выбор Mac OSX по умолчанию Ruby и выбрать свой недавно установленный Ruby.

Ответ 17

Я запускаю среду Windows dev.

Я только добавил C:\Ruby22-x64\bin в моей переменной пути до heroku\bin.

Ответ 18

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

rails new myapp
//Your Ruby version is 2.1.5, but your Gemfile specified 2.0.0

Я буквально каждый раз решал эту проблему, которую мог найти в Интернете, и в конце концов выяснилось, что моя проблема была вызвана тем, что я случайно установил приложение Rails в User/MyName, и он читал, что Gemfile.

Итак, прежде чем вы сможете попробовать различные другие решения, предлагаемые здесь, вы можете захотеть взять секунду, чтобы подтвердить, что вы ничего не сделали.