- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在 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/
背景 之前陆续写过一些和 OpenTelemetry 相关的文章: 实战:如何优雅的从 Skywalking 切换到 OpenTelemetry 实战:如何编写一个 OpenTeleme
我很困惑PSReadLine历史在 Powershell 中跨 session 工作。我可以在 PS 版本 5.1 中看到我以前的命令历史记录自动存储在 %userprofile%\AppData\R
我有一个实体,我正在从面板中保存我们的数据库,您可以在其中执行常规操作(编辑、添加等)。不是很大,大多数时候大约有 1k 行,而且这个数字可能总是在这个左右。该实体有一些与其他实体相关的字段(例如:位
有时有人想直接在环境中更改 crx 中的内容。 这通常是环境不工作状态的原因。而且往往很难找到问题的原因。而且我认为如果 cq5 crx 有审计日志会很有帮助。像这样。 12.12.12 21:03
这个问题与可以在其他问题之一中找到的模式有关here.基本上在数据库中,我存储用户,位置,传感器等。所有这些内容都可以由用户在系统中编辑,并且可以删除。 但是-在编辑或删除项目时,我需要存储旧数据;我
我需要随时跟踪许多项目及其状态。 例子 ItemId Location DateTime State 1 Mall A 2010-02-03 07:00 on
我有这个方法来添加 fragment : public void addFragmentOnTop(Fragment fragment) { getSupportFragmentManager()
我想了解 HTML5 历史对象。这是我开始的一个简单示例。 function addDialog(){ document.getElementById('d').style.
我如何使用 HTML5 history api。我确实通过了https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
我正在尝试找出在关系数据库中保存表的历史记录/修订的最佳方法。 我进行了一些研究和阅读,但不确定跟踪更改的最佳方式是什么。对于我的主表,我很确定我已经确定了一个修订表,以保持跟踪(见图),但我不确定是
这个问题在这里已经有了答案: Git: discover which commits ever touched a range of lines (6 个答案) 关闭 9 年前。 我一直在研究 gi
我有一个相当复杂的程序(带有 SWIG'ed C++ 代码的 Python,长期运行的服务器),它显示了不断增长的常驻内存使用量。我一直在使用常用的泄漏工具(valgrind、Pythons gc 模
我的 Git 存储库中有一行包含单词“Foo”的数百次提交。 是否有任何方法可以在上次的位置找到它的修订号? 最佳答案 这可以通过 -S 的镐 ( gitlog ) 选项来解决。 git log -
我不小心删除了一个文件(我不是他的创建者)并提交并将其推送到远程。现在我想让 git 取消删除此更改,但是当我使用 git revert #mistaken commit 时,它可以工作,但指责信息指
我使用 spyder 历史 Pane 查看我过去尝试过的命令,但最近我注意到它不会在我键入命令时更新。屏幕截图 1 显示了控制台和历史记录 Pane ,因为您可以看到历史记录中没有显示任何控制台条目。
我的应用程序使用 Camunda 7.7 运行。到目前为止,所有数据都保存在 Camunda 表 (ACT_XXX) 中——它们变得很大。所以现在我想清理表格并配置 Camunda,以便在 14 天后
我在 SVN 上有一个这样组织的旧项目: /一些/子目录/a/trunk/foo /一些/子目录/b/trunk/foo /一些/子目录/c/trunk/foo 我使用GitHub工具git-impo
我有一个通用的工作功能,为此我将使用 GNU Radio 的历史记录功能。在 block 的构造函数中,我调用了 set_history( m )。我以标准方式转换输入缓冲区: const flo
当我加载 php 页面时,我会附加一些数据。例如 MyPage.php?value=something。正如预期的那样,当我使用后退按钮来回移动时,它总是会加载附加的相同数据。我不想那样。我希望在页面
我们有一个相当大的库,我们需要定期将其导入(然后修补)到我们的代码库中。 SVN Book 似乎推荐了一个“vendor branch”方案,我们保留了“vendor drops”的补丁版本。这会起作
我是一名优秀的程序员,十分优秀!