Проблемы с консолью Rails с использованием JRuby: нет символа приглашения, не заполняется вкладка, сломанные клавиши со стрелками и т.д.
У меня возникают проблемы с моей консолью Rails под JRuby, включая
- Нет приглашающего символа
- Tab завершение не работает (вставляется литеральная вкладка)
- Стрелки вверх/вниз не просматривают историю (
^[[A
или ^[[B
вставлены соответственно)
- Стрелки влево/вправо не перемещаются (
^[[D
или ^[[C
вставлены соответственно)
- Home/End ключи, не перемещающие курсор в начало/конец строки (вместо
1~
или 4~
вставлены соответственно); Ctrl + a/Ctrl + e работает, хотя
- Ctrl + c консоль убийства вместо того, чтобы убить строку, в которую я вхожу
- Ctrl + d не имеет никакого эффекта, пока я не нажму Enter (который затем выполняет все, что я ввел между Ctrl + d и Enter в моей оболочке Unix).
Я установил свой интерпретатор JRuby из rvm следующим образом:
rvm install jruby-1.6.8 --1.9
Проект My Rails управляется с помощью Bundler (не rvm gemsets), поэтому я запускаю консоль Rails с помощью bundle exec rails c
. Интересно, что raw irb
, а также bundle exec irb
не имеют большинства из вышеперечисленных проблем, кроме ключей Home/End и Ctrl + c требуется Enter, прежде чем я получу свежий оперативная линия.
Я могу реплицировать проблему с помощью barebones Rails Gemfile
:
source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'sqlite3'
Моя оболочка zsh
, на Ubuntu 12.04 64-bit. $JAVA_HOME
есть /usr/lib/jvm/java-7-openjdk-amd64
, но, возможно, он все еще был java-6, когда я устанавливал этот интерпретатор, если это имеет значение.
Обновление: некоторые исправления
Отсутствующий символ подсказки, по-видимому, вызван настройкой IRB.conf[:PROMPT_MODE]
на :NULL
с помощью консоли Rails. Для обычного irb
мой получает значение :RVM
(очевидно, rvm делает это в ~/.rvm/scripts/irb.rb
; я исключил rvm, вызвав эту проблему, комментируя script). Предоставление значения :PROMPT_MODE
в ~/.irbrc
устраняет это. Я подумал, что, возможно, подобная проблема вызывала проблемы Ctrl + c/Ctrl + d, меняя :IGNORE_SIGINT
и :IGNORE_EOF
, но оба они установлены в значения по умолчанию.
Завершение вкладки и клавиши со стрелками фиксируются установкой :USE_READLINE
на true.
Здесь мой текущий ~/.irbrc
, который, кажется, исправляет указанные проблемы:
require 'irb/completion'
IRB.conf[:PROMPT_MODE] = :SIMPLE
IRB.conf[:USE_READLINE] = true
IRB.conf[:AUTO_INDENT] = true
Ответы
Ответ 1
Запуск консоли со следующими исправлениями для меня:
jruby -Xlaunch.inproc=true -S rails c
Если вам не нравится запускать эту команду каждый раз, вы можете установить переменную среды:
set JRUBY_OPTS=-Xlaunch.inproc=true
или
export JRUBY_OPTS=-Xlaunch.inproc=true
затем
rails c
Ответ 2
У меня была эта проблема с Windows, и исправление заключалось в том, чтобы увеличить "Количество буферов" в настройках командной строки.
Командная строка → Свойства → Параметры → Количество буферов
По умолчанию 4, я изменился на 8 и все работало хорошо (я думаю, 5 будет работать, хотя)