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

时间:2012-11-30 16:45:57

标签: ruby-on-rails jruby rails-console

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

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

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

rvm install jruby-1.6.8 --1.9

My Rails项目使用Bundler(而不是rvm gemsets)进行管理,因此我使用bundle exec rails c运行我的Rails控制台。有趣的是,原始irb以及bundle exec irb除了 Home / End 键以外,还没有上述大部分问题。 kbd> 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)。在:PROMPT_MODE中提供~/.irbrc值会解决此问题。我想也许类似的问题是通过更改{{1}导致 Ctrl + c / Ctrl + d 问题}和:IGNORE_SIGINT,但它们都设置为默认值。

通过将:IGNORE_EOF设置为true来修复标签完成和箭头键。

这是我现在的:USE_READLINE似乎解决了上述问题:

~/.irbrc

2 个答案:

答案 0 :(得分:6)

运行具有以下功能的控制台为我解决了这些问题:

jruby -Xlaunch.inproc=true -S rails c

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

set JRUBY_OPTS=-Xlaunch.inproc=true

export JRUBY_OPTS=-Xlaunch.inproc=true

然后

rails c

答案 1 :(得分:2)

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