У меня возникают проблемы с моей консолью 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