10

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

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

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

rvm install jruby-1.6.8 --1.9

我的 Rails 项目是使用 Bundler(不是 rvm gemsets)管理的,所以我使用bundle exec rails c. 有趣的是,除了/键和+需要一个新的提示行之前,rawirbbundle exec irb上面的大多数问题都没有。HomeEndCtrlcEnter

我可以用准系统 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解决这个问题。我想也许一个类似的问题是通过更改and导致Ctrl+ c/ Ctrl+问题,但它们都设置为默认值。d:IGNORE_SIGINT:IGNORE_EOF

:USE_READLINE通过设置为 true,可以修复 Tab 补全和箭头键。

这是我目前~/.irbrc似乎可以解决上述问题的电流:

require 'irb/completion'

IRB.conf[:PROMPT_MODE]  = :SIMPLE
IRB.conf[:USE_READLINE] = true
IRB.conf[:AUTO_INDENT]  = true
4

2 回答 2

6

使用以下命令运行控制台为我解决了这些问题:

jruby -Xlaunch.inproc=true -S rails c

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

set JRUBY_OPTS=-Xlaunch.inproc=true

或者

export JRUBY_OPTS=-Xlaunch.inproc=true

然后

rails c
于 2014-02-04T22:47:55.883 回答
2

我在 Windows 上遇到了这个问题,解决方法是在命令提示符设置中增加“缓冲区数”。命令提示符 -> 属性 -> 选项 -> 缓冲区数 默认为 4,我改为 8 并且一切正常(但我认为 5 可以)

于 2013-05-21T20:26:08.513 回答