JRuby の Rails コンソールでさまざまな問題が発生しています。
- プロンプト文字なし
- Tab補完が機能しない (リテラル タブが挿入される)
- 閲覧履歴ではない上/下矢印 (
^[[A
または^[[B
それぞれ挿入されます) - 左/右矢印がカーソルを動かさない (
^[[D
または^[[C
それぞれ挿入される) - Home/Endキーがカーソルを行頭/行末に移動しない (代わりに
1~
、または4~
挿入された); Ctrl+ a/ Ctrl+ でもeうまくいく - Ctrl+c入力している行を強制終了する代わりに、コンソールを強制終了します
- Ctrl+dヒットするまで何の効果もありませんEnter(その後、Ctrl+dとEnterUnix シェルで入力したものはすべて実行されます)。
次のように、rvm から JRuby インタープリターをインストールしました。
rvm install jruby-1.6.8 --1.9
私の Rails プロジェクトは (rvm gemsets ではなく) Bundler を使用して管理されているため、bundle exec rails c
. 興味深いことに、rawirb
にbundle exec irb
は上記の問題のほとんどがありませんが、Home/EndキーとCtrl+を除いて、新しいプロンプト行を取得する前にc必要です。Enter
ベアボーン Rails で問題を再現できますGemfile
:
source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'sqlite3'
私のシェルはzsh
、Ubuntu 12.04 64ビットです。$JAVA_HOME
ですが/usr/lib/jvm/java-7-openjdk-amd64
、問題があれば、このインタープリターをインストールしたときはまだ Java-6 だった可能性があります。
更新: いくつかの修正
プロンプト文字が欠落しているのは、Rails コンソールによってIRB.conf[:PROMPT_MODE]
設定されたことが原因であると思われます。:NULL
通常irb
の場合、私の場合は に設定されます:RVM
(明らかに rvm は でこれを行い~/.rvm/scripts/irb.rb
ます。スクリプトをコメントアウトすることで、この問題の原因となる rvm を除外しました)。に: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