Ruby 1.9.2和Rails 3无法打开rails控制台

gka*_*kck 47 ruby linux rubygems ruby-on-rails ruby-on-rails-3

[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>'
Run Code Online (Sandbox Code Playgroud)

我在ruby 1.9.2p136上安装了rails 3,我猜是好的.但我无法启动rails控制台,它给了我复制的错误.应用程序与ruby 1.8.7配合得很好,我从来没有看到过像这样的错误.

任何想法可能是什么?

win*_*red 49

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

从第一次google点击(是的,我在点击第一个结果之前点击了这个堆栈溢出到位#2.)

导航到Ruby源并输入:

sudo apt-get install libreadline5-dev
cd ext/readline
ruby extconf.rb
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

所以,如果你在另一个发行版上,请确保以某种方式安装readline(源/包),然后从源代码在extconf上运行make/install.我尝试了gkaykck当然建议的但是在我的系统上已经没有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
Run Code Online (Sandbox Code Playgroud)

  • 如果你使用rvm,在下面找到ruby src:〜/ .rvm/src/ruby​​-version-number/ext/readline (13认同)

Nik*_*vin 29

使用rvm的人的食谱:

rvm pkg install readline
rvm remove 1.9.3
rvm install 1.9.3 --with-readline-dir=$rvm_path/usr
Run Code Online (Sandbox Code Playgroud)

有关它的详细信息,请访问https://rvm.io/packages/readline/


Phi*_*lip 11

如果您想要解决此问题,请执行此操作.

sudo apt-get install libreadline6
Run Code Online (Sandbox Code Playgroud)

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

gem 'rb-readline'
Run Code Online (Sandbox Code Playgroud)

然后

bundle install
Run Code Online (Sandbox Code Playgroud)

你应该全力以赴.


fut*_*int 5

我建议使用rvm(Ruby Version Manager)来管理不同版本的Ruby并在它们之间切换.它也可以很好地为您编译各种版本.您甚至可以创建每个目录的.rvmrc文件来告诉rvm在哪个目录中使用哪个版本的ruby(如果需要,还可以使用每个项目的gem集!)

  • 您不需要安装多个版本的Ruby.即使您只使用一个,也值得切换到RVM. (6认同)
  • @gkaykck:使用RVM.请相信我们. (2认同)

pis*_*ruk 5

首先卸载你拥有的每个ruby版本.

之后显示rvm要求:

rvm requirements
Run Code Online (Sandbox Code Playgroud)

你会得到类似的东西:

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
Run Code Online (Sandbox Code Playgroud)

通过apt-get安装所有依赖项.
之后安装ruby 1.8.7.如果您打算使用ruby 1.9.x,则需要此版本
现在您可以安装ruby 1.9.3:

rvm pkg install readline
rvm remove 1.9.3
rvm install 1.9.3 --with-readline-dir=$rvm_path/usr
Run Code Online (Sandbox Code Playgroud)

请注意,如果您使用apt-get安装了readline软件包,则甚至不需要通过rvm安装readline软件包.