[[email protected] 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 `'
Ho installato le guide 3 su Ruby 1.9.2p136, il che è ok credo. Ma non posso avviare la console di rails e mi dà l’errore che ho copiato. Le app hanno funzionato alla perfezione con Ruby 1.8.7 e non ho mai visto un errore come questo.
Qualche idea su cosa potrebbe essere?
Apparentemente ubuntu e ruby non sempre prendono le dipendenze come dovrebbero.
Dal primo hit di google (sì, ho fatto clic su questo overflow nello stack n. 2 prima di controllare il primo risultato.)
Passare alla fonte Ruby e inserire:
sudo apt-get install libreadline5-dev cd ext/readline ruby extconf.rb make sudo make install
Quindi, se sei su un’altra distribuzione, assicurati di installare readline in qualche modo (sorgente / pacchetto), quindi esegui make / install su extconf dall’origine. Ho provato ciò che gkaykck ha suggerito, naturalmente, ma l’ho ottenuto senza readline già sul mio sistema.
$ 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
Ricetta per chi usa rvm:
rvm pkg install readline rvm remove 1.9.3 rvm install 1.9.3 --with-readline-dir=$rvm_path/usr
In maggiori dettagli su https://rvm.io/packages/readline/
Se vuoi un’altra soluzione a questo problema, fallo.
sudo apt-get install libreadline6
Quindi nel tuo gem file aggiungi:
gem 'rb-readline'
Poi
bundle install
E tu dovresti essere tutto pronto.
Ti consiglio di utilizzare rvm (Ruby Version Manager) per gestire le diverse versioni di Ruby e passare da una all’altra. Fa un buon lavoro di compilare le varie versioni anche per te. È anche ansible creare file .rvmrc per directory per indicare a rvm quale versione di ruby usare in quale directory (oltre a utilizzare gli insiemi di gemme per progetto se si desidera!)
Prima di tutto disinstalla ogni versione ruby che hai.
Dopo aver visualizzato i requisiti di rvm:
rvm requirements
Otterrai qualcosa come:
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
Installa tutte le dipendenze tramite apt-get.
Dopo aver installato Ruby 1.8.7. Questa versione è necessaria se si intende utilizzare Ruby 1.9.x.
Ora puoi installare Ruby 1.9.3:
rvm pkg install readline rvm remove 1.9.3 rvm install 1.9.3 --with-readline-dir=$rvm_path/usr
Si noti che non è nemmeno necessario installare il pacchetto readline tramite rvm se lo si è installato utilizzando apt-get.
Con CentOS 6:
Ricorda che stiamo lavorando dalla directory di installazione di ruby, per me è stato:
/opt/ruby-1.9.3-p194/ext/readline
Se vedi il seguente output, quindi readline non è installato:
$ 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
Per installare con RPM:
yum install readline-devel
Quindi costruisci:
ruby extconf.rb make sudo make install
La soluzione è di andare alla cartella sorgente che hai compilato ruby => ext => readline di
ruby extconf.rb make sudo make install
Aggiunta nel file Gem
gem 'rb-readline'
e poi bundle install
ha fatto il trucco per me
Se stai usando RVM puoi rifare la readline. Questo ha risolto il problema per me. Istruzioni qui:
nessun file da caricare – readline (carico errore)
usa rvm remove per rimuovere tutto il ruby installato. fai un “che ruby” se ottieni ancora qualcosa, devi reinstallare rvm quindi installare ruby usando rvm.