Rails3 и проблема readline - PullRequest
       31

Rails3 и проблема readline

6 голосов
/ 30 марта 2011

Я впервые использую rails3 (я использую rails2 в течение многих лет) внутри rvm.Пытаясь запустить консоль, я получаю эту ошибку:

require': no such file to load -- readline

Я погуглил, и это, кажется, распространенная проблема.Кажется, что большинство решений включают 1) установку следующего: sudo apt-get install libncurses5-dev libreadline5-dev 2) переход в папку gem для readline, запуск ruby extconf.rb, который генерирует make-файл 3) выполнение make и make install

Теперь,У меня не было readline установлен в моем rvm, поэтому я попытался установить его.Но не могу понять, что такое драгоценный камень: gem install readline не дает никаких результатов.Единственный, кого я нашел, был gem install rdp-rb-readline.Я установил две библиотеки dev, установил гем rdp-rb-readline, зашел в следующую папку гемов и запустил ruby extconf.rb.Это действительно генерирует make-файл.Но я не могу make это или make 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 моего приложения.Я думаю, просто нужно было знать, где искать материал для чтения, если он не был в обычном месте.Мне не нужно было ничего делать с extconf.rb, что хорошо, потому что в геме rb-readline его нет.

Я оставил это в конце своего вопроса, потому что а) кто-то ещеможет лучше понять проблему, чем мой метод проб и ошибок, и б) в случае, если у кого-то есть такая же проблема.

Ответы [ 2 ]

4 голосов
/ 30 марта 2011

Если вы используете rvm, вы всегда можете воспользоваться средством установки пакета, чтобы исправить любые проблемы, которые могут возникнуть в вашей ОС. Ruby часто использует библиотеки, которые немного отличаются от установленных вами:

rvm package install readline

Установщик rvm применяет несколько исправлений к определенной, известной рабочей версии readline и должен собираться без проблем. Этот пакет readline не повлияет на установку вашей системы и используется только для сборок на основе rvm.

3 голосов
/ 19 июля 2011
cd ~/.rvm/src/ruby-X.X.X-pXXX/ext/readline

(замените ruby-1.9.2-p180 на версию вашей системы ruby)

ruby extconf.rb

, если любая проверка говорит «нет», установите следующие пакеты:

sudo apt-get install libncurses5-dev libreadline5-dev

изапустите ruby extconf.rb

вы должны получить все проверки да,

make
make install

теперь это будет работать.

...