[英]Rails console: in `require': cannot load such file — readline (LoadError)
我的 Rails 应用程序出现了一些错误,我正在尝试通过发出以下命令来启动 Rails 控制台:
rails console
无论我尝试什么,我总是遇到相同的错误:
/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `require': cannot load such file -- readline (LoadError)
from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `<top (required)>'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `require'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `<top (required)>'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `require'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
我真的尝试了我在网上找到的所有可能的解决方案,因为很多人都遇到了同样的错误。 不幸的是,似乎没有任何效果。 当我尝试以下命令时:
ruby /usr/local/rvm/src/ruby-2.1.1/ext/readline/extconf.rb
我得到以下输出
checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... no
checking for readline() in -ledit... no
checking for editline/readline.h... no
*** /usr/local/rvm/src/ruby-2.1.1/ext/readline/extconf.rb failed ***
表示缺少某些内容,但使用 apt-get 安装 readline 也没有任何区别。 我猜这可能与不兼容的 gem 版本有关,因为控制台前段时间工作过短暂。 readline 是否存在任何已知的版本问题? 很多人似乎都遇到过这个 gem 的问题。
尝试将rb-readline
放在您的 Gemfile 中并查看https://stackoverflow.com/a/9595841/1905235
我终于找到了解决方案。 这是几个问题的结合(gem 版本,冲突的 readline 库)。
首先,我重新获取了 readline 库
sudo apt-get install libreadline-dev
然后我卸载了ruby
rvm remove 2.1.1
我再次安装了 ruby
rvm install 2.1.1
我告诉 RVM 使用默认的 (2.1.1) Ruby
rvm use default
我重新安装了 Rails 和 readline
gem install rails
gem install readline
我再次启动控制台时出现错误,但略有不同:
/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `require': /usr/local/lib/libreadline.so.6: undefined symbol: UP - /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/x86_64-linux/readline.so (LoadError)
from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/irb/completion.rb:9:in `<top (required)>'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `require'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands/console.rb:3:in `<top (required)>'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `require'
from /opt/mammie/web/icosole/vendor/bundle/ruby/2.1.0/gems/railties-3.1.3/lib/rails/commands.rb:37:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
所以按照这个说明( http://vkarthickeyan.wordpress.com/2012/02/16/mysql-symbol-lookup-error-usrlocalliblibreadline-so-6-undefined-symbol-up/ ),我让它工作:
cd /usr/local/lib
mkdir temp
mv libreadline* temp
ldconfig
apt-get update
感谢 Hunterboerner 的帮助!
这在没有 readline 的 Solaris 机器上运行正常,可能对您有用:
$ bundle exec irb
irb(main):001:0> require File.expand_path('config/boot')
=> true
irb(main):002:0> require File.expand_path('config/environment')
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /export/home/deploy/recon/shared/bundle/ruby/1.8/gems/rails-2.3.18/lib/rails/gem_dependency.rb:21.
Warning: NLS_LANG is not set. fallback to US7ASCII.
=> true
irb(main):027:0> require 'console_app'
=> true
rvm requirements
我遇到了这个问题,通过键入以下rvm requirements
解决: rvm requirements
并安装返回的内容。 似乎,虽然这是 rvm 的旧版本,因此可能不再相关
rvm reinstall 2.7.0
为我工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.