【发布时间】:2016-10-17 07:11:40
【问题描述】:
我在 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 is not saving 中列出的答案,但没有成功。
我还尝试了irb history not working 中的选定答案。
我必须更改所选答案以替换 #nitems 方法。这表明正在从历史文件中读取行,并推送到Readline::HISTORY。但是,检查 Readline::HISTORY 并没有显示任何内容。
我可以通过 Readline.readline 将我的 .irb_history 中的前几行添加到 Readline 历史记录中,并指定 add_hist=true 来破解历史记录。但是,将前面的命令添加到 Readline 绝对不是正确的方法。
我知道我可以改用 pry 之类的东西,但我想弄清楚这一点。 关于为什么没有将命令添加到 Readline 以及如何更改的任何建议?
【问题讨论】:
-
你说的一件事我觉得很奇怪:你说 save-history.rb 是空白的。我的
~/.rbenv/versions/2.3.0/lib/ruby/2.3.0/irb/ext/save-history.rb充满了使历史工作的代码。我想如果你的是空白的,无论有没有 readline,irb 历史都不会工作。 -
嗯。我不再拥有原来的 2.3.0,但我只是回去查看了我的 2.0.0,并且 save-history.rb 文件中确实有代码。我没有任何解释,除了我的大脑因为挖掘这个而有点炸了。
标签: ruby macos readline irb ruby-2.3