[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 `<top (required)>'
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 `<top (required)>'
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 `<top (required)>'
from script/Rails:6:in `require'
from script/Rails:6:in `<main>'
J'ai installé Rails 3 sur Ruby 1.9.2p136, ce qui est ok je suppose. Mais je ne peux pas démarrer Rails console et cela me donne l'erreur que j'ai copiée. Les applications ont très bien fonctionné avec Ruby 1.8.7 et je n'ai jamais vu une erreur comme celle-ci.
Des idées ce que cela pourrait être?
Apparemment, ubuntu et Ruby ne captent pas toujours les dépendances comme elles le devraient.
Depuis le premier coup sur Google (ouais, j'ai cliqué sur ce débordement de pile à 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 distribution, assurez-vous d'installer readline (source/package), puis exécutez make/install sur extconf à partir de la source. J'ai essayé ce que gkaykck a suggéré, bien sûr, mais j'ai obtenu ceci 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 rvm:
rvm pkg install readline
rvm remove 1.9.3
rvm install 1.9.3 --with-readline-dir=$rvm_path/usr
Plus de détails à ce sujet sur https://rvm.io/packages/readline/
Si vous souhaitez une autre solution à ce problème, procédez comme suit.
Sudo apt-get install libreadline6
Ensuite, dans votre fichier gem, ajoutez:
gem 'rb-readline'
Ensuite
bundle install
Et vous devriez être prêt.
Tout d'abord, désinstallez chaque Ruby version 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 cette installation Ruby 1.8.7. Cette version est requise si vous prévoyez d'utiliser Ruby 1.9.x
Vous pouvez maintenant 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'aviez installé en utilisant apt-get.
Je recommanderais d'utiliser rvm (Ruby Version Manager) pour gérer vos différentes versions de Ruby et basculer entre elles. Il fait un très bon travail de compilation des différentes versions Vous pouvez même créer des fichiers .rvmrc par répertoire pour indiquer à rvm quelle version de Ruby à utiliser dans quel répertoire (ainsi que des ensembles de gemmes par projet si vous le souhaitez!)
Avec CentOS 6:
Souvenez-vous que nous travaillons à partir du répertoire d'installation 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 que
Ruby extconf.rb
make
Sudo make install
Ajout dans le Gemfile
gem 'rb-readline'
puis bundle install
a fait l'affaire pour moi
Si vous utilisez RVM, vous pouvez refaire la lecture. Cela a résolu le problème pour moi. Instructions ici:
utilisez rvm remove pour supprimer tout Ruby installé. faites un "quel Ruby" si vous obtenez toujours quelque chose, vous devez réinstaller rvm puis installer Ruby en utilisant rvm.