IRB历史不适用于Ruby 2.3.0
我在OS X 10.11.4上通过rbenv安装了Ruby 2.3.0p0。 在IRB会议中,历史记录正常。 但是,我无法跨会话访问IRB历史记录。
我尝试了我的系统Ruby,2.0.0p648,IRB会话的历史记录工作正常。 我尝试通过rbenv安装相同版本的Ruby,它也有工作历史。
我在工作和非工作会话之间比较了IRB.conf
的值,没有看起来IRB.conf
(尽管奇怪的是,在这两种情况下, irb / ext / save-history.rb都是空白文件)。
查看我的.irb_history文件,它似乎被替换而不是附加了最新会话的命令。 我可以加载2.0.0 IRB会话并滚动这些命令就好了。
我已经尝试过rbenv irb历史记录中列出的答案没有成功保存 。
我也尝试了irb历史中选定的答案不起作用 。 我必须改变选定的答案来替换#nitems方法。 这表明正在从历史文件中读Readline::HISTORY
,并将其推送到Readline::HISTORY
。 但是,检查Readline::HISTORY
没有显示任何内容。
通过Readline.readline
将我的.irb_history中的前一行添加到Readline历史记录中,并指定add_hist = true,我可以破解历史。 但是,绝对不是将以前的命令添加到Readline的正确方法。
我知道我可以切换到像撬的东西,但我想弄明白这一点。 有关为什么命令没有添加到Readline的任何建议,以及如何更改它?
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
因为这是Evan使用的。
使用MacPorts
rbenv不了解MacPorts,因此您需要明确告诉它使用MacPorts的readline。
- 如果尚未安装
sudo port install readline
。 -
rbenv uninstall 2.3.0
-
RUBY_CONFIGURE_OPTS=--with-readline-dir=/opt/local rbenv install 2.3.0
使用Homebrew
rbenv自动检测自制软件并在其中查找readline ,因此,如果您使用的是Homebrew并且irb历史记录不起作用,则要么您没有安装readline,要么在安装readline之前构建了Ruby。
-
brew install readline
如果它尚未安装 -
rbenv uninstall 2.3.0
-
rbenv install 2.3.0