Ruby 1.9.2和Rails 3无法打开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>' 

我已经在ruby1.9.2p136安装轨3,这是好的我猜。 但我无法启动轨道控制台,它给了我复制的错误。 该应用程序与ruby1.8.7工作得很好,我从来没有看到这样的错误。

任何想法可能是什么?

显然ubuntu和ruby并不总是像他们应该那样捕获依赖。

从第一次谷歌命中 (是的,我点击这个堆栈溢出#2之前检查出第一个结果。)

导航到Ruby源代码并input:

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

所以,如果你在另一个发行版上,确保你安装了readline(source / package),然后在源extconf上运行make / install。 我尝试了什么gkaykckbuild议当然,但没有readline已经在我的系统上得到这个。

 $ 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 

那些使用rvm的食谱:

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

有关https://rvm.io/packages/readline/的更多详细信息,;

如果你想要另一个解决这个问题的话,就这样做。

 sudo apt-get install libreadline6 

然后在你的gem文件中添加:

 gem 'rb-readline' 

然后

 bundle install 

而且你应该全部设置。

我build议使用rvm(Ruby版本pipe理器)来pipe理你的不同版本的Ruby,并在它们之间切换。 它也为你编译各种版本做了很好的工作。 你甚至可以创build每个目录的.rvmrc文件来告诉rvm在哪个目录下使用哪个版本的ruby(以及如果你想使用每个项目的gem集合!)

首先卸载你每个ruby版本。

之后显示rvm的要求:

 rvm requirements 

你会得到像这样的东西:

 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 

通过apt-get安装所有依赖项。
之后安装ruby1.8.7。 如果你打算使用Ruby 1.9.x,这个版本是必需的
现在你可以安装ruby1.9.3:

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

请注意,如果你已经使用apt-get来安装,你甚至不需要通过rvm安装readline包。

与CentOS 6:

请记住,我们正在从ruby安装目录,对我来说是这样的:

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

如果您看到以下输出,则不会安装readline:

 $ 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 

使用RPM进行安装:

 yum install readline-devel 

然后build立它:

 ruby extconf.rb make sudo make install 

解决的办法是到你编译的ruby => ext => readline比源文件夹

 ruby extconf.rb make sudo make install 

在Gemfile中添加

 gem 'rb-readline' 

然后bundle install

为我做了诡计

如果您使用RVM,则可以重新设置readline。 这为我解决了这个问题。 说明:

没有这样的文件加载 – readline(加载错误)

使用rvm remove来删除所有安装的ruby。 做一个“ruby”,如果你仍然得到一些东西,你需要重新安装rvm,然后使用rvm安装ruby。