gpt4 book ai didi

ruby - IRB 历史不适用于 Ruby 2.3.0

转载 作者:数据小太阳 更新时间:2023-10-29 06:29:06 25 4
gpt4 key购买 nike

我在 OS X 10.11.4 上通过 rbenv 安装了 Ruby 2.3.0p0。在 IRB session 中,历史记录工作正常。但是,我无法跨 session 访问 IRB 历史记录。

我尝试了我的系统 Ruby,2.0.0p648,并且跨 IRB session 的历史记录工作正常。我尝试通过 rbenv 安装相同版本的 Ruby,它也有工作历史。

我比较了工作 session 和非工作 session 之间 IRB.conf 的值,看起来没有什么不合适的地方(尽管奇怪的是,irb/ext/save-history.rb 在这两种情况下都是空白文件)。

查看我的 .irb_history 文件,它似乎被最近 session 中的命令替换,而不是附加。我可以加载 2.0.0 IRB session 并滚动浏览这些命令就好了。

我已经尝试了 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 以及如何更改它的任何建议?

最佳答案

OS X 的命令行编辑基于 libedit 库。 OS X 有一个版本的 readline 库,它是 libedit 的包装器,但它的行为并不完全像 GNU readline。 irb history 在 Ruby 中工作,使用 OS X 的包装器构建到 Ruby 2.1,但 Ruby 2.2 和更高版本需要使用 GNU readline 构建,irb history 才能工作。

在下文中,2.3.0 可以是从 2.2.0 开始的任何 Ruby 版本。我写了 2.3.0 因为这是 Evan 使用的。

使用自制软件

如果你使用 homebrew 安装 ruby​​,它会带来一个可用的 readline 版本。

  • brew 安装 ruby​​

然后按照说明将其添加到您的 PATH 中。那么execute gem install irb 如果提示 can't find gem irb

使用 MacPorts

rbenv 不知道 MacPorts,因此您需要明确告诉它使用 MacPorts 的 readline。

  • sudo port install readline 如果尚未安装。
  • rbenv 卸载 2.3.0
  • RUBY_CONFIGURE_OPTS=--with-readline-dir=/opt/local rbenv install 2.3.0

将 Homebrew 与 rbenv 结合使用

rbenv automatically detects homebrew and looks in it for readline ,因此,如果您使用的是 Homebrew 并且 irb 历史记录不起作用,则您要么没有安装 readline,要么在安装 readline 之前构建了 Ruby。

  • brew install readline 如果还没有安装
  • rbenv 卸载 2.3.0
  • rbenv 安装 2.3.0

关于ruby - IRB 历史不适用于 Ruby 2.3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com