IRB历史记录不能与Ruby 2.3.0一起使用

我通过rbenv安装了 Ruby 2.3.0p0,在OS X 10.11.4上.在IRB会议期间,历史工作正常.但是,我无法在会话中访问IRB历史记录.

我尝试过我的系统Ruby,2.0.0p648,跨IRB会话的历史记录工作正常.我尝试通过rbenv安装相同版本的Ruby,并且还具有工作历史.

我比较了工作和非工作会话之间的IRB.conf的值,没有什么看起来不合适(尽管在这两种情况下,irb / ext / save-history.rb都是一个空白文件).

看看我的.irb_history文件,看来它正在被最新会话的命令所替代,而不是被追加.我可以加载一个2.0.0的IRB会话,滚动浏览这些命令就行了.

我已经尝试了rbenv irb history is not saving中列出的答案没有成功.

我也在irb history not working尝试了选择的答案.
我不得不改变选择的答案来替换#nitems方法.这表明线条正在从历史文件中读出,并推送到Readline :: HISTORY.但是,检查Readline :: HISTORY没有显示任何内容.

我可以通过添加以前的行从.irb_history到Readline历史记录通过Readline.readline,并指定add_hist = true,可以排序历史.但是,绝对不是将以前的命令添加到Readline的正确方法.

我知道我可以切换到像撬皮这样的东西,但是我想想出来.
关于为什么命令不被添加到Readline的任何建议,以及如何改变?

解决方法

OS X的命令行编辑基于libedit库. OS X有一个版本的readline库,它是一个围绕libedit的包装,但它的行为不像GNU readline那样完全. irb历史在Ruby中使用OS X包装到Ruby 2.1,但Ruby 2.2及更高版本需要使用GNU readline构建,以使irb历史可以正常工作.

在下面的2.3.0中可以是2.2.0以上的任何Ruby版本.我写了2.3.0,因为那是Evan所用的.

使用MacPorts

rbenv不知道MacPorts,所以你需要明确地告诉它使用MacPorts的readline.

> sudo端口安装readline如果没有安装.
> rbenv uninstall 2.3.0
> RUBY_CONfigURE_OPTS = – with-readline-dir = / opt / local rbenv install 2.3.0

使用自制

rbenv automatically detects homebrew and looks in it for readline,所以,如果你使用Homebrew和irb历史记录不起作用,你可能没有安装readline或者你在安装readline之前构建了Ruby.

>如果没有安装brew install readline> rbenv uninstall 2.3.0> rbenv install 2.3.0

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...