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
如果你想要另一个解决这个问题的话,就这样做。
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。