Rails3和readline问题

时间:2011-03-30 14:13:27

标签: ruby-on-rails ruby ruby-on-rails-3 rvm readline

我在rvm中第一次使用rails3(我多年来一直使用rails2)。尝试启动控制台,我收到此错误:

require': no such file to load -- readline

我已经用Google搜索了,这似乎是一个常见的问题。大多数解决方案似乎涉及1)安装以下内容:sudo apt-get install libncurses5-dev libreadline5-dev 2)转到读取线的gem文件夹,运行ruby extconf.rb生成一个makefile 3)做makemake install

现在,我的rvm中没有安装readline,所以我尝试安装它。但无法弄清楚宝石是什么:gem install readline没有给出任何结果。我发现的唯一一个是gem install rdp-rb-readline。我安装了两个dev库,安装了rdp-rb-readline gem,转到后续的gem文件夹,然后运行ruby extconf.rb。这确实生成了一个makefile。但我不能makemake install:我收到这些错误:

max-laptop:readline$ make cc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -DHAVE_READLINE_READLINE_H -DHAVE_READLINE_HISTORY_H -DHAVE_RL_FILENAME_COMPLETION_FUNCTION -DHAVE_RL_USERNAME_COMPLETION_FUNCTION -DHAVE_RL_COMPLETION_MATCHES -DHAVE_RL_DEPREP_TERM_FUNCTION -DHAVE_RL_COMPLETION_APPEND_CHARACTER -DHAVE_RL_BASIC_WORD_BREAK_CHARACTERS -DHAVE_RL_COMPLETER_WORD_BREAK_CHARACTERS -DHAVE_RL_BASIC_QUOTE_CHARACTERS -DHAVE_RL_COMPLETER_QUOTE_CHARACTERS -DHAVE_RL_FILENAME_QUOTE_CHARACTERS -DHAVE_RL_ATTEMPTED_COMPLETION_OVER -DHAVE_RL_LIBRARY_VERSION -DHAVE_RL_EVENT_HOOK -DHAVE_RL_CLEANUP_AFTER_SIGNAL -DHAVE_RL_CLEAR_SIGNALS -DHAVE_RL_VI_EDITING_MODE -DHAVE_RL_EMACS_EDITING_MODE -DHAVE_REPLACE_HISTORY_ENTRY -DHAVE_REMOVE_HISTORY -fPIC -fno-strict-aliasing -g -g -O2 -fPIC -c readline.c readline.c: In function ‘readline_readline’: readline.c:82: error: ‘rb_io_t’ undeclared (first use in this function) readline.c:82: error: (Each undeclared identifier is reported only once readline.c:82: error: for each function it appears in.) readline.c:82: error: ‘ofp’ undeclared (first use in this function) readline.c:82: error: ‘ifp’ undeclared (first use in this function) make: *** [readline.o] Error 1

现在有点卡住了。我错过了其他基本的东西,我需要制作所需的库/宝石/其他什么?

感谢任何建议 - 最多

解: 我实际上刚解决了这个问题 - 我卸载了rdp-rb-readline gem,然后执行gem install rb-readline,然后将gem 'rb-readline'添加到我的应用程序的Gemfile中。我想它只需要知道在哪里寻找readline的东西,如果它不在通常的地方。我不需要对extconf.rb做任何事情,这很好,因为rb-readline gem没有。

我在问题的最后留下了这个因为a)其他人可能对问题有了更好的理解,而不是我的试错方法和b)以防其他人遇到同样的问题。

2 个答案:

答案 0 :(得分:4)

如果您使用的是rvm,则可以随时使用软件包安装程序来解决操作系统可能遇到的任何问题。 Ruby经常使用与您安装的库有点不同的库:

rvm package install readline

rvm安装程序针对特定的,已知工作版本的readline应用多个修补程序,并且应该构建没有问题。此readline包不会影响您的系统安装,仅用于基于rvm的构建。

答案 1 :(得分:3)

cd ~/.rvm/src/ruby-X.X.X-pXXX/ext/readline

(用您的系统ruby版本替换ruby-1.9.2-p180)

ruby extconf.rb

如果有任何检查说不,请安装这些包装:

sudo apt-get install libncurses5-dev libreadline5-dev

并运行ruby extconf.rb

你应该全部检查是,

make
make install

现在它会起作用。