Як виправити “Ваша версія Ruby 1.9.3, але ваш Gemfile вказав 2.0.0”


76

Я створив проект 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

2
Будь ласка, не використовуйте зображення або зовнішнє сховище для важливих частин вашого запитання. Ланки гниють і ламаються. На той момент це питання не матиме сенсу для майбутніх людей, які шукають подібні рішення. Натомість скопіюйте та вставте основні частини помилки та ваш gem-файл у текст запитання.
Олов'яна людина

Відповіді:


26

Якщо ви запускаєте, 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'

ur вказано Gemfile 2.1.0 ~ / projects / site (newtemplate) $ ruby ​​-v ruby ​​2.1.0p0 (редакція 25.12.2013 44422) [i686-linux] ~ / projects / site (newtemplate) $ rails -v Your Ruby версія 1.9.3, але ваш Gemfile вказав 2.1.0 ~ / projects / site (newtemplate) $ rails s Ваша версія Ruby 1.9.3, але ваш Gemfile вказав 2.1.0 ~ / projects / site (newtemplate) $ bundle exec rails s Ваша версія Ruby 1.9.3, але ваш Gemfile вказав 2.1.0 Як це вирішити?
prasad.surase

32
Я використовую rvm і показую, що ruby -vмоя версія ruby ​​- 2.2.0, але в повідомленні про помилку сказано, що версія ruby ​​- 2.0.0
буксирування

Відповідь @ mistertim нижче вирішила цю проблему для мене$ gem install bundler
Дієго Діас де Беренгер

167

Я помітив, що це трапляється, коли я намагався bundle installзі свіжим набором RVM, який ще не включав пакет, (оскільки він знову потрапив до встановлення системного пакета, яке посилалося на системний рубін).

Біг gem install bundlerвиправлений для мене.


3
Дякую @mistertim. Мені чудово підходило, коли я ruby -vдавав потрібну версію, і пакет не виявляв її.
Кеннет,

Дуже дякую! Я не можу зрозуміти, що відбувалося!
okysabeni

38
пам'ятати "rbenv rehash" після "gem install bundler"
AndrewW

1
ти врятував мій день. Дякую.
Даніеле Врут,

2
Можливо, очевидно, але лише додати, що вам потрібно фактично запустити bundleпісля встановлення камені пакета. (Інакше помилка все одно може трапитися через раніше створені двійкові файли, які можуть ввести людей в оману, вважаючи, що це не спрацювало.)
mahemoff

41

Жодне з них не працювало для мене, але я нарешті зрозумів:

spring stop

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

Я розпочав Spring з Ruby 2.1.1, але потім оновив до 2.1.2 (у Gemfile та .ruby-версії). Моя теорія полягає в тому, що Spring продовжував працювати на 2.1.1 і тому спричинив цю помилку.


Це спрацювало для мене після того, як я встановив Spree, а потім оновив мою версію Ruby. Дякую.
сталь

Дякую! Я думаю, це теж було моє питання.
RonLugge,

29

Можливо, причиною цього є Heroku Toolbelt, якщо ви використовуєте herokuкоманду, а точніше, використовуєте bundle exec heroku, чого ніколи не робити. Якщо ви можете вирішити проблему, видаливши bundle execперед herokuдзвінками, спробуйте спершу це. Якщо ні, то дотримуйтесь запропонованого нижче.


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

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


Якщо ви встановили інструментальну стрічку 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, зазначену там наприкінці.

--- НЕ використовуйте цю сторінку та її упакований інсталятор для встановлення Heroku CLI на 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 з домоволодінням

Тому що він коректно пов’язує поточну версію RVM з інструментом Heroku. Виконати:

brew install heroku-toolbelt

Потім інструментальна стрічка Heroku буде встановлена ​​лише в цьому місці:

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

(Ви також можете легко видалити його, brew uninstall heroku-toolbeltякщо хочете.)

Тестування встановлення:

› rvm current
ruby-2.0.0-head@bloggery

› 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.


Чудова відповідь, дякую. Зверніть увагу, що це те саме працює з rbenv.
Ден Кон

1
Це фантастика, у мене була саме така проблема. Один коментар - посилання на ваші проблеми більше не працює.
mattnedrich

Дякую @mattnedrich, я оновив публікацію кількома новими посиланнями вгорі на нове місце на github: github.com/heroku/cli
Magne

Єдине, що мені вдалося! Це справді старий інструментальний ремінь героку, який спричинив проблему.
rimkashox

11

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


це рішення для мене чудово працює, тому що я працюю в декількох проектах, в яких використовується інша версія ruby.
Jais Anasrulloh Ja'fari

5

"У мене була та ж проблема з використанням rbenv, встановленого за допомогою brew.

Я не зміг це зрозуміти, спробував усе вищезазначене, в підсумку перейшов на rvm, який це вирішив ".

У відповідь на цю публікацію ви повинні переконатися, що ви біжите rbenv rehash після встановлення рубінової версії. Здавалося, це спрацювало для мене, коли я зіткнувся з тією ж проблемою.


Біг rbenv rehashвирішив проблему і для мене.
MoskitoHero

Woah, я не сподівався прокрутити так далеко, щоб отримати відповідь, яку шукав :) Я не хотів переходити на rvm.
GabLeRoux

5

Якщо ви використовуєте менеджер версій Ruby, такий як RVM або rbenv, створіть у каталозі верхнього рівня проекту файл із іменем, .ruby-versionщо містить версію, зазначену у вашому Gemfile, наприклад:

2.0.0

Очевидно, це перехресний {rbenv,rvm}шлях опису версії зараз.


3

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

2
Приємно. sudo apt-get install ruby-switchвідсутня.
Смугастий

3

У моєму випадку я раніше rvm get headоновлював версію RVM, і вона працювала.


2

У мене виникла ця проблема після оновлення версій Ruby через rbenv. Я спробувавspring stop команду, яку хтось згадав вище.

Коли я побіг, що отримав чергове повідомлення із пропозицією бігти gem pristine --all

Попередження: Запуск gem pristine - все для регенерації встановлених gemspecs покращить продуктивність запуску Spring.

Тож я виконав цю команду, а потім все повернулося до звичного.


2

основною причиною цієї проблеми є ваша машина та gemfile, що використовують іншу версію ruby

тому існує кілька проблем та рішень для цього питання, ви можете спробувати наведені нижче рішення по одному

1 - переконайтесь, що ваша машина встановила та використовувала ту саму версію вашого gemfile, якщо ваша машина не використовує ту саму, спробуйте встановити цю версію за допомогою rvm

$ rvm install ruby_version_you_want

переконайтесь, що версія встановлена ​​успішно, використовуючи цю команду

$ rvm list

і якщо нова версія не встановлена ​​за замовчуванням, ви можете встановити її за допомогою цієї команди

$ rvm --default use ruby_version_you_want 

Ви можете перевірити поточну рубінову версію

 $ rvm current 
 $ ruby -v 

2 - якщо у вас однакова проблема, перевірте свого постачальника

  $ gem install bundler
    or
  $ gem update bundler 

3- в деяких випадках весна все ще використовує стару версію, тому вам потрібно зупинити її

$ ./bin/spring stop

4- ще один випадок, який ви можете ввести

$ gem pristine --all 

і спробуйте встановити пакет знову

5- також у деяких випадках після встановлення оновленої версії ruby ​​вам просто потрібно перезапустити термінал.

6 - ще одне рішення, але я не рекомендував йому каталог верхнього рівня вашого проекту, створіть файл .ruby-version, що містить вашу активну запущену версію ruby

7- якщо проблема все ще є, спробуйте видалити ruby ​​та встановити лише оновлену версію

 $ aptitude purge ruby 

1

Я виявив, що перевстановлення RVM зробило трюк, коли сталася ця помилка, оскільки будь-яка інша пропозиція не спрацювала.


0

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

Я не зміг це зрозуміти, спробував усе вищезазначене, тому в підсумку перейшов на RVM, який це вирішив.


0

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

Mac OSX постачається із застарілою версією Ruby, яка вже встановлена ​​і встановлена ​​як Ruby за замовчуванням. Щоб виправити проблему, ви можете встановити "JewelryBox", чарівну та милу програму, яка надає графічний інтерфейс для перегляду та керування кількома рубінами (корисно, якщо у вас кілька середовищ розробників на одному Mac). За його допомогою можна скасувати вибір Ruby за замовчуванням для Mac OSX та вибрати нещодавно встановлений Ruby.


0

Я виявив, що мій сценарій rake або rails у каталозі bin використовував іншу версію ruby. Я порівняв два рейкові сценарії з двох серверів (виробництво та розробка), і це показало мені, що вони використовують різні рубінові версії. Тож мені довелося відповідно оновити.

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

0

Натрапив на цю помилку під час використання дорогоцінного каменя для пасажирів. Оскільки я встановив цей самоцвіт із доступом sudo, він взяв версію ruby ​​за замовчуванням самостійно. Я вважаю, що причиною може бути те, що ruby ​​був встановлений без доступу sudo в моїй системі, а пасажир не знав, яку саме версію ruby ​​слід використовувати.

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


0

Пропозиція для тих, хто знаходить цю проблему, і жодне з типових рішень не вирішує цю проблему за вас, перевірте, чи є у вас більше одного менеджера версій ruby. Існує кілька менеджерів версій, і деякі сценарії програмного забезпечення або інсталяції використовуватимуть різні. Я знаю rbenv, rvm, asdfі щонайменше один інший , що я не пам'ятаю ім'я. я мавasdf встановив інший інструмент, не розуміючи, що це сталося, і це спричинило невідповідність зазначеної версії.

Щоб перевірити це, виконайте which rubyі уважно подивіться на шлях. Якщо це не справжній менеджер версій, якого ви очікуєте, ви страждаєте від цієї проблеми. Найпростішим виправленням є використання того, який ви хочете, і позбавлення від іншого. Якщо з якихось причин вам потрібно зберегти обидва, вам, мабуть, доведеться змінити порядок шляхів у файлі .rc вашої оболонки.


-1

Я поділяю цю лакоминку в момент великого полегшення після того, як нарешті вирішив проблему, яка переслідує мене місяцями.

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

Я спробував буквально кожне рішення цієї проблеми, яке я міг знайти в Інтернеті, і наприкінці дня виявилося, що моя проблема була спричинена тим, що я випадково встановив додаток Rails у Users / MyName, і він читав цей Gemfile.

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


-1

Я використовую середовище розробника Windows.

Я щойно додав C:\Ruby22-x64\binзмінну шляху до heroku\binвходу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.