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

Abe*_*ker 10 ruby-on-rails jruby rails-console

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

  • 没有提示字符
  • Tab 完成不起作用(插入文字标签)
  • 向上/向下箭头不会浏览历史记录(^[[A^[[B分别插入)
  • 左/右箭头不移动光标(^[[D^[[C分别插入)
  • Home/ Endkeys不将光标移动到行的开头/结尾(分别代替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
Run Code Online (Sandbox Code Playgroud)

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

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

source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'sqlite3'
Run Code Online (Sandbox Code Playgroud)

我的shell是zsh在64位的Ubuntu 12.04上.$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).提供修复此: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
Run Code Online (Sandbox Code Playgroud)

小智 6

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

jruby -Xlaunch.inproc=true -S rails c
Run Code Online (Sandbox Code Playgroud)

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

set JRUBY_OPTS=-Xlaunch.inproc=true
Run Code Online (Sandbox Code Playgroud)

要么

export JRUBY_OPTS=-Xlaunch.inproc=true
Run Code Online (Sandbox Code Playgroud)

然后

rails c
Run Code Online (Sandbox Code Playgroud)


小智 2

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