Ruby 1.9.2 et Rails 3 ne peuvent pas ouvrir la console des rails

[gkaykck@main myApplication]$ rails console /usr/local/lib/ruby/1.9.1/irb/completion.rb:9:in `require': no such file to load -- readline (LoadError) from /usr/local/lib/ruby/1.9.1/irb/completion.rb:9:in `' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:3:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands/console.rb:3:in `' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands.rb:20:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/commands.rb:20:in `' from script/rails:6:in `require' from script/rails:6:in `' 

J’ai installé les rails 3 sur Ruby 1.9.2p136, ce qui est correct, je suppose. Mais je ne peux pas démarrer la console de rails et cela me donne l’erreur que j’ai copiée. Les applications fonctionnaient très bien avec Ruby 1.8.7 et je n’ai jamais vu d’erreur comme celle-ci.

Des idées sur ce que cela pourrait être?

Apparemment, Ubuntu et Ruby ne capturent pas toujours les dépendances comme elles le devraient.

Dès le premier hit google (oui, j’ai cliqué sur ce stack-overflow à la place # 2 avant de vérifier le premier résultat).

Accédez à la source Ruby et entrez:

 sudo apt-get install libreadline5-dev cd ext/readline ruby extconf.rb make sudo make install 

Donc, si vous êtes sur une autre dissortingbution, assurez-vous d’installer readline quelque part (source / package), puis lancez make / install sur extconf à partir de la source. J’ai essayé ce que gkaykck a bien sûr suggéré, mais je l’ai eu sans readline déjà sur mon système.

 $ ruby extconf.rb checking for tgetnum() in -lncurses... no checking for tgetnum() in -ltermcap... no checking for tgetnum() in -lcurses... no checking for readline/readline.h... no checking for editline/readline.h... no 

Recette pour ceux qui utilisent le rvm:

 rvm pkg install readline rvm remove 1.9.3 rvm install 1.9.3 --with-readline-dir=$rvm_path/usr 

Pour plus de détails à ce sujet sur https://rvm.io/packages/readline/

Si vous voulez une autre solution à ce problème, faites-le.

 sudo apt-get install libreadline6 

Puis dans votre fichier gem, ajoutez:

 gem 'rb-readline' 

alors

 bundle install 

Et vous devriez être tous ensemble.

Je vous recommande d’utiliser rvm (Ruby Version Manager) pour gérer vos différentes versions de Ruby et basculer entre elles. Il comstack très bien les différentes versions pour vous. Vous pouvez même créer des fichiers .rvmrc par répertoire pour indiquer à rvm quelle version de ruby ​​utiliser dans quel répertoire (et utiliser des ensembles de gem par projet si vous voulez!)

Tout d’abord désinstaller chaque version de Ruby que vous avez.

Après cela, affichez les exigences rvm:

 rvm requirements 

Vous obtiendrez quelque chose comme:

 Requirements for Linux ( DISTRIB_ID=Ubuntu DISTRIB_RELEASE=11.10 DISTRIB_CODENAME=oneiric DISTRIB_DESCRIPTION="Ubuntu 11.10" ) NOTE: 'ruby' represents Matz's Ruby Interpreter (MRI) (1.8.X, 1.9.X) This is the *original* / standard Ruby Language Interpreter 'ree' represents Ruby Enterprise Edition 'rbx' represents Rubinius bash >= 4.1 required curl is required git is required (>= 1.7 for ruby-head) patch is required (for 1.8 rubies and some ruby-head's). To install rbx and/or Ruby 1.9 head (MRI) (eg. 1.9.2-head), then you must install and use rvm 1.8.7 first. Additional Dependencies: # For Ruby / Ruby HEAD (MRI, Rubinius, & REE), install the following: ruby: /usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion # For JRuby, install the following: jruby: /usr/bin/apt-get install curl g++ openjdk-6-jre-headless jruby-head: /usr/bin/apt-get install ant openjdk-6-jdk # For IronRuby, install the following: ironruby: /usr/bin/apt-get install curl mono-2.0-devel 

Installez toutes les dépendances via apt-get.
Après cela, installez ruby ​​1.8.7. Cette version est requirejse si vous prévoyez d’utiliser ruby ​​1.9.x
Maintenant, vous pouvez installer Ruby 1.9.3:

 rvm pkg install readline rvm remove 1.9.3 rvm install 1.9.3 --with-readline-dir=$rvm_path/usr 

Notez que vous n’avez même pas besoin d’installer le paquet readline via rvm si vous l’avez installé avec apt-get.

Avec CentOS 6:

Rappelez-vous que nous travaillons à partir du répertoire d’installation de ruby, pour moi c’était:

  /opt/ruby-1.9.3-p194/ext/readline 

Si vous voyez la sortie suivante, alors readline n’est pas installé:

 $ ruby extconf.rb checking for tgetnum() in -lncurses... no checking for tgetnum() in -ltermcap... no checking for tgetnum() in -lcurses... no checking for readline/readline.h... no checking for editline/readline.h... no 

Pour installer avec RPM:

 yum install readline-devel 

Ensuite, construisez-le:

 ruby extconf.rb make sudo make install 

La solution consiste à aller dans le dossier source que vous avez compilé ruby => ext => readline

 ruby extconf.rb make sudo make install 

Ajouter dans le Gemfile

 gem 'rb-readline' 

et ensuite bundle install

fait le tour pour moi

Si vous utilisez RVM, vous pouvez refaire readline. Cela a résolu le problème pour moi. Instructions ici:

pas de tel fichier à charger – readline (Load Error)

utiliser rvm remove pour enlever tous les rbuy installés. faire un “quel ruby” si vous obtenez toujours quelque chose, vous devez réinstaller rvm puis installer ruby ​​en utilisant rvm.