IRB历史不适用于Ruby 2.3.0

Eva*_*Pon 24 ruby macos irb readline ruby-2.3

我在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历史记录中列出的答案没有成功保存.

我也尝试了irb历史中选定的答案不起作用.我不得不改变选择的答案来替换#nitems方法.这表明正在从历史文件中读出行,并将其推送到Readline::HISTORY.然而,检查Readline::HISTORY显示没有.

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

我知道我可以切换到像撬的东西,但我想弄清楚这一点.有关为什么命令没有被添加到Readline的任何建议,以及如何更改它?

Dav*_*uth 40

OS X的命令行编辑基于libedit库.OS X有一个readline库的版本,它是libedit的包装器,但它的行为与GNU readline完全不同.irb history在Ruby中运行,使用OS X的包装器构建到Ruby 2.1,但是Ruby 2.2及更高版本需要使用GNU readline构建,以便irb历史工作.

在下面,2.3.0可以是2.2.0上的任何Ruby版本.我写道,2.3.0因为这是埃文使用的.

使用MacPorts

rbenv不了解MacPorts,因此您需要明确告诉它使用MacPorts的readline.

  • brew install ruby 如果它还没有安装.
  • gem install irb
  • can't find gem irb

使用Homebrew

rbenv自动检测自制软件并在其中查找readline,因此,如果您使用的是Homebrew并且irb历史记录不起作用,则您要么未安装readline,要么在安装readline之前构建了Ruby.

  • sudo port install readline 如果它还没有安装
  • rbenv uninstall 2.3.0
  • RUBY_CONFIGURE_OPTS=--with-readline-dir=/opt/local rbenv install 2.3.0

  • 为了使它工作,我将`IRB.conf [:SAVE_HISTORY] = 100000`添加到`〜/ .irbrc`. (6认同)