微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/ruby/265173.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐