使用JRuby的Rails控制台问题:没有提示字符,没有选项卡完成,箭头键错误等

我在JRuby下的Rails控制台遇到了各种各样的问题,包括

  • 没有提示字符
  • 标签完成不起作用(插入文字标签)
  • 向上/向下箭头不浏览历史记录( ^[[A^[[B分别插入^[[B
  • 左/右箭头不移动光标( ^[[D^[[C分别插入^[[C
  • Home / End键不将光标移动到行的开头/结尾(而是分别插入1~ 4~ ); 然后按Ctrl + a / Ctrl + e工作
  • Ctrl + c查杀控制台而不是杀死我正在输入的行
  • Ctrl + d没有任何影响,直到我按Enter键 (然后执行我在Unix + shell中输入的 Ctrl + dEnter之间的任何内容)。

我从rvm安装了我的JRuby解释器,如下所示:

 rvm install jruby-1.6.8 --1.9 

我的Rails项目是使用Bundler(而不是rvm gemsets)管理的,所以我使用bundle exec rails c运行我的Rails控制台。 有趣的是,原始irb以及bundle exec irb没有上述大部分问题,除了Home / End键和Ctrl + c在得到新的提示行之前需要Enter

我可以用准系统Rails Gemfile复制这个问题:

 source 'https://rubygems.org' gem 'rails', '3.2.6' gem 'sqlite3' 

我的shell是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/scripts/irb.rb ;我通过注释掉脚本排除了导致此问题的rvm)。 在~/.irbrc提供:PROMPT_MODE~/.irbrc解决这个问题。 我想也许类似的问题是通过更改:IGNORE_SIGINT:IGNORE_EOF导致Ctrl + c / Ctrl + d问题,但它们都设置为默认值。

通过将:USE_READLINE设置为true,可以修复制表符完成和箭头键。

这是我目前的~/.irbrc似乎解决了上述问题:

 require 'irb/completion' IRB.conf[:PROMPT_MODE] = :SIMPLE IRB.conf[:USE_READLINE] = true IRB.conf[:AUTO_INDENT] = true 

运行以下控制台为我修复了这些问题:

 jruby -Xlaunch.inproc=true -S rails c 

如果您不喜欢每次都运行该命令,可以设置一个环境变量:

 set JRUBY_OPTS=-Xlaunch.inproc=true 

要么

 export JRUBY_OPTS=-Xlaunch.inproc=true 

然后

 rails c 

我在Windows中遇到此问题,修复方法是在命令提示符设置中增加“缓冲区数”。 命令提示符 – >属性 – >选项 – >缓冲区数默认值为4,我更改为8并且一切运行良好(我认为5会工作)