我在 OS X 10.11.4 上通过 rbenv 安装了 Ruby 2.3.0p0。在 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 中列出的答案,如果没有成功就不会保存。
我还尝试了irb history not working中选择的答案。我必须更改所选答案以替换 #nitems 方法。这表明正在从历史文件中读取行,并将其推送到Readline::HISTORY
. 然而,检查Readline::HISTORY
在那里什么也没有。
我可以通过将 .irb_history 中的前几行添加到 Readline 历史记录中Readline.readline
,并指定 add_hist=true 来破解历史记录。但是,将前面的命令添加到 Readline 绝对不是正确的方法。
我知道我可以切换到像 pry 这样的东西,但我想弄清楚这一点。关于为什么没有将命令添加到 Readline 以及如何更改它的任何建议?