Come risolvere “La tua versione di Ruby è 1.9.3, ma il tuo Gemfile specifica 2.0.0”

Ho creato un progetto Ruby, ma quando bundle update bundle install e l’ bundle install restituisce un errore:

 Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0 

Un’immagine di esso è: http://sofit.miximages.com/ruby-on-rails/dZMhI11.png?1

Il mio 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 

Se esegui ruby -v vedrai che hai installato Ruby 1.9.3, ma la prima riga nel tuo Gemfile specifica che vuoi usare Ruby 2.0.0.

Dovresti installare Ruby 2.0.0 o cambiare la prima riga nel tuo Gemfile per specificare Ruby 1.9.3.

esempio di 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' 

Ho notato che questo accade quando ho provato a bundle install con un nuovo gemset RVM che non includeva ancora il bundler (mentre ricadeva nell’installazione del bundle di sistema che faceva riferimento al ruby ​​del sistema).

gem install bundler risolto il gem install bundler con il gem install bundler esecuzione.

Nessuno di questi ha funzionato per me, ma alla fine ho capito:

 spring stop 

Ho avuto un progetto Rails 4 che utilizza qualcosa chiamato Spring per mantenere un ambiente Rails in esecuzione in background, per velocità.

Avevo avviato Spring con Ruby 2.1.1, ma poi ho aggiornato a 2.1.2 (in Gemfile e .ruby-version). La mia teoria è che Spring continuava a funzionare su 2.1.1 e quindi ha causato questo errore.

Heroku Toolbelt potrebbe causarlo se stai usando il comando heroku , o più specificamente, usando bundle exec heroku , che non dovresti mai fare. Se è ansible risolvere il problema rimuovendo il bundle exec di fronte heroku chiamate heroku , provare prima. In caso contrario, quindi seguire ciò che è suggerito di seguito.


Aggiornamento del 25 febbraio 2017:
Heroku Toolbelt è stato rinominato in Heroku CLI . Vedere questi collegamenti per le istruzioni aggiornate di installazione / disinstallazione:
https://devcenter.heroku.com/articles/heroku-cli
https://github.com/heroku/cli

Il post originale è fornito inedito di seguito (per istruzioni legacy):


Se hai installato il cinturino Heroku dal sito ufficiale:

Nella parte superiore di /usr/bin/heroku probabilmente dice qualcosa come #!/usr/local/heroku/ruby/bin/ruby

Prova a eseguire /usr/local/heroku/ruby/bin/ruby -v e controlla se esce 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 

Si noti la 1.9.3 specificata alla fine lì.

NON usare questa pagina e il suo programma di installazione pacchettizzato per installare la CLI Heroku su OSX:

https://toolbelt.heroku.com/

Perché i dettagli tecnici elencati sono importanti:

Il client della riga di comando heroku verrà installato in / usr / local / heroku e / usr / local / heroku / bin verrà aggiunto al PATH.

Questo è dannoso, perché RVM farà questo:

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

C’è quella versione irritante della versione 1.9.3, anche quando ho specificato un’altra versione di Ruby con RVM.

Disinstallare la cintura di strumenti Heroku

Non esiste un programma di disinstallazione ufficiale per OSX, scrivi +1 se pensi ci dovrebbe essere uno: https://github.com/heroku/toolbelt/issues/8

Disinstallare manualmente (spostandosi nel Cestino, per mantenere un backup, nel caso in cui qualcosa non funzioni):

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

Installa invece il cinturone Heroku con l’homebrew

Perché collega correttamente la versione RVM corrente a Heroku-toolbelt. Correre:

brew install heroku-toolbelt

Heroku toolbelt verrà quindi installato solo in questa posizione:

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

(Puoi anche rimuoverlo facilmente con brew uninstall heroku-toolbelt se lo desideri).

Test dell’installazione:

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

Si noti che ora dice 2.0.0 alla fine di quest’ultimo comando. Adesso esegui il client Heroku con qualsiasi versione di Ruby rvm current che hai specificato in RVM.

Se si digita l’ rvm list e viene visualizzata una versione 2.0 di Ruby come versione corrente e si verifica ancora questo errore, la digitazione di rvm use (ruby version) risolto il problema per me.

“Ho avuto lo stesso problema con rbenv, installato tramite brew.

Non riuscivo a capirlo, ho provato tutto quanto sopra, ho finito per passare a RVM che l’ha risolto. ”

In risposta a questo post, devi assicurarti di eseguire rbenv rehash dopo aver installato una versione ruby. Sembrava funzionare per me quando mi sono imbattuto nello stesso problema.

Se stai utilizzando un gestore di versioni di Ruby come RVM o rbenv, quindi crea, nella directory di livello superiore del tuo progetto, un file di nome .ruby-version contenente la versione spec’d nel tuo Gemfile, ad esempio:

 2.0.0 

Apparentemente questo è il modo incrociato {rbenv,rvm} di specificare la versione ora.

ruby-switch è stato rimosso da ubuntu 14.04 e versioni successive . Lascerò questa risposta per i posteri, ma probabilmente hai bisogno di una soluzione diversa. Controlla ” Installa ruby ​​2.0 senza ruby-switch? “.


Se hai installato una nuova versione di Ruby ma stai ancora ricevendo degli errori sulla mancata corrispondenza di Gemfile, probabilmente devi usare ruby-switch per impostare la nuova versione di Ruby come predefinita:

 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 

Nel mio caso ho usato rvm get head per aggiornare la versione RVM e ha funzionato.

Ho trovato che reinstallare RVM ha fatto il trucco quando si è verificato questo errore, come ogni altro suggerimento non ha funzionato.

Ho avuto questo problema dopo aver aggiornato le versioni di Ruby tramite rbenv. Ho provato il comando di spring stop che qualcuno ha menzionato sopra.

Quando ho corso ho ricevuto un altro messaggio che suggeriva di eseguire gem pristine --all

Attenzione: l’esecuzione di gem pristine – tutto per rigenerare le gemspec installate migliorerà le prestazioni di avvio di Spring.

Così ho eseguito quel comando, e poi le cose sono tornate alla normalità.

Ho avuto lo stesso problema con rbenv, installato tramite Homebrew.

Non riuscivo a capirlo, ho provato tutto quanto sopra, così ho finito per passare a RVM che l’ha risolto.

Ho scoperto che lo script rake o rails sotto la directory bin utilizzava un’altra versione di ruby. Ho confrontato due script di rake da due server (produzione e sviluppo) e mi ha mostrato che stavano usando diverse versioni di ruby. Quindi ho dovuto aggiornare di conseguenza.

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

Condivido questo bocconcino in un momento di grande sollievo dopo aver finalmente risolto un problema che mi perseguita da mesi.

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

Ho provato letteralmente ogni soluzione a questo problema che ho potuto trovare sul Web e alla fine della giornata il mio problema è stato causato dal fatto che avevo accidentalmente installato un’app Rails in Users / MyName e leggevo quel Gemfile.

Quindi, prima di andare a provare le varie altre soluzioni offerte qui, potresti volerci un secondo per confermare che non hai fatto qualcosa di simile.

Sto eseguendo l’ambiente di sviluppo di Windows.

Ho appena aggiunto C:\Ruby22-x64\bin nella mia variabile percorso prima di heroku\bin .

Ho avuto questo problema esatto – solo pochi secondi dopo aver visto Mac OSX Terminal confermare che Ruby 2.0.0 è stato installato con successo.

Mac OSX viene fornito con una versione obsoleta di Ruby già installata e impostata come Ruby di default. Per correggere il problema, puoi installare “JewelryBox”, un’app affascinante e deliziosa che ti offre una GUI per visualizzare e gestire più rubini (utile se hai più ambienti di sviluppo su un Mac). Puoi usarlo per deselezionare Ruby predefinito di Mac OSX e selezionare il Ruby appena installato.