使用命令 bundle exec rackup config.ru,结果出现下面的错误:
/gems/pry-0.9.7.4/lib/pry.rb:160:in require': cannot load such file -- readline (LoadError)
from /home/user/Oauth2/DoorKeeper/doorkeeper-sinatra-client-master/gems/pry-0.9.7.4/lib/pry.rb:160:in
'
from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.2.2/lib/bundler/runtime.rb:68:in `require'
如何解决啊?
#1 楼 @i5ting Gemfile 的内容如下: source "http://rubygems.org"
gem 'sinatra' gem 'oauth2' gem 'pry' gem 'redcarpet'
应该不是 source 的问题而是 ruby 安装的问题
从错误信息看楼主用的是系统 ruby, 建议 lz 换用 rvm 安装 ruby, 装好 rvm 后 rvm requirements
看需要 apt-get 或者 yum 装的内容,然后再 rvm install ruby-1.9.3-p362
问题原因:ruby 有几个 extension: readline, openssl, zlib, gdbm 是可选的,如果安装 ruby 时系统里没有对应库的开发版,那就会选择跳过。用 apt-get 安装的 ruby 就经常有这样的问题 -_-. readline 是 irb/pry 里处理历史/自动完成等功能的 extension, 找不到就是因为 readline extension 没装上。
#6 楼 @zhangyuxiu 源码安装的话,装完了 readline, 转到 ruby 源代码目录里 ext/readline,
ruby extconf.rb
sudo make install
#7 楼 @luikore 我源码安装的 ruby,不知道安装 ruby 时有没有自动安装 readline?但是,我还是通过 yum 重新安装了 readline。 这是上述命令的结果:
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 [root@localhost readline]# make install make: Nothing to be done for `install'. [root@localhost readline]#
#10 楼 @zhangyuxiu 一般的包是编译好的可执行文件或者动态链接库,可以直接用的. devel 是 development 的缩写,也就是开发用的包,一般包含头文件 (.h) 和静态库文件 (.a), 静态库是 object file 的归档 (archive), 开发者可以用 C 引入头文件,编译链接到静态库文件,通过编程使用包的功能。
readline extension 就是包装了 readline, 让你可以在 ruby 中用 readline 而已。