我尝试过我的系统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的任何建议,以及如何改变?
解决方法
在下面的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