47 votes

Ruby 1.9.2 et Rails 3 ne peuvent pas ouvrir la console de 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 `<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é les 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 fonctionnaient très bien avec ruby 1.8.7 et je n’ai jamais vu d’erreur de ce genre.

Des idées ce que cela pourrait être?

49voto

winfred Points 1828

Apparemment ubuntu et ruby ne pas toujours prendre les dépendances comme ils le devraient.

À partir de la première google hit (ouais, j'ai cliqué sur cette pile de dépassement en place #2 avant de vérifier le premier résultat.)

Accédez à la Ruby source 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 distro, assurez-vous d'installer readline en quelque sorte (source/paquet), puis exécutez make install sur extconf à partir de la source. J'ai essayé ce que gkaykck suggéré, bien sûr, mais il a obtenu ce 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

29voto

Nikolay Moskvin Points 772

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/

11voto

Philip Points 1119

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

 sudo apt-get install libreadline6
 

Ensuite, dans votre fichier de gemme, ajoutez:

 gem 'rb-readline'
 

ensuite

 bundle install
 

Et vous devriez être tous ensemble.

5voto

futuremint Points 604

Je vous recommande 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 pour vous aussi. 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 gem par projet si vous le souhaitez!)

5voto

pisaruk Points 483

Tout d'abord désinstaller toute version de ruby que vous avez.

Après que l'affichage rvm exigences:

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

Installer toutes les dépendances via apt-get.
Après que installer ruby 1.8.7. Cette version est nécessaire si vous envisagez 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 readline paquet via rvm si vous aviez installé à l'aide de apt-get.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X