【问题标题】:How can I clear the rails console history如何清除 Rails 控制台历史记录
【发布时间】:2010-12-10 19:11:52
【问题描述】:

当我运行 rails c 并在 irb 启动时按向上键时,我可以看到我在遇到 ruby​​-debug gem 的 debugger 命令后掉到 irb 时输入的最后命令。我不仅想清除这些命令,而且如果rails c 会拉出我在上一次 Rails 控制台会话期间发出的最后一条命令,我也想这样做。我认为它曾经这样做,但我不确定发生了什么变化。如果有帮助,我在 Mac OS 10.6.5 上使用 ruby​​ 1.8.7 和 rails 3.0.3。

更新

Rayanswer 在此期间帮助了我。最近我进行了更多挖掘以了解更多信息,并意识到存在许多相互矛盾的问题。

IRB 检查您是否有 ~/.irbrc,如果没有,则回退到 /etc/irbrc,如 Ray 所述。但是,如果您使用的是rvm,那么如果您在ENV 中设置了rvm_path(如果使用@ 987654336@).

有趣的是,虽然~/.rvm/scripts/irbrc.rb 是基于/etc/irbrc,但它们并不相同,并且在某些方面有所不同。检测系统上正在使用哪个文件的最明显和最简单的方法是它们的历史文件名。如果使用/etc/irbrc,您的历史文件将为~/.irb_history,其中rvm~/.irb-history注意_-)。

希望这些附加信息能帮助您确定您需要什么来设置您的系统。

打听问题

我已经停止使用debugger 并已移至pry-byebug,其中包括pry gem。 Pry 是 IRB 的替代品,但也可以在其旁边和内部使用。我能够提供上述更新的原因是因为我试图弄清楚如何将它们各自的历史分开。有关更多信息,请参阅my answer"why does pry history keep cloberring irb history?" 的 SO 问题。我已经在此处包含了指向 Pry 的已知 Github 问题以及我尝试修复它的链接。

【问题讨论】:

  • 您能找到解决方案吗?
  • 看起来 Ray 可能会为我指明正确的道路,但我还是有点迷茫。

标签: ruby-on-rails ruby readline irb pry


【解决方案1】:

我将您的问题解释为询问如何在 Rails 控制台中打开历史记录并在 Ruby 调试器中关闭。如果这不是真的,请澄清。

IRB,以及扩展的 Rails 控制台,从~/.irbrc 读取,或者如果不存在,/etc/irbrc,以启动和配置 irb。您的历史记录通常写入~/.irb_history,但这取决于您的irbrc 文件的内容。我的 Mac OS X 上的 /etc/irbrc 设置为从 irb 写入历史记录,因此您可能创建了一个没有历史记录的本地 .irbrc,或者您在该文件中有语法错误。

调试器在启动时读取一个名为.rdebugrc 的文件。您可以通过将此行添加到 ~/.rdebugrc 来关闭调试中的历史记录:

set history save off

使用以下命令重新打开它:

set history save on

您还可以使用以下命令将调试输出设置为与 irb 读取的文件不同的文件:

set history filename

这些也可以在调试提示符下工作,但不是持久的。

【讨论】:

  • 感谢雷的回答。我仍在试图弄清楚发生了什么。也可能是我一直在 Rails 2.3 和 Rails 3 项目之间切换。我查看了我的 ~/.irbrc 文件,它没有提到任何关于历史的内容。但是 /etc/irbrc 说要使用 ~/.irb_history。更奇怪的是,当我运行 irb 或 ./script/console 时,我会将我的历史记录(减去第一个条目)写入 ~/.irb_history 和 ~/.irb-history。我删除了两者以确保它们都是在一次 irb 会话之后创建的。
  • 我创建了“set history ~/.rdebug_history”并将其放入 ~/.rdebugrc。但是,从我的 Rails 应用程序进入 irb 调试器后,我仍然没有编写 ~/.rdebug_history 文件,尽管调试器确实有历史记录,并且它与 irb 和脚本/控制台不同。
  • 我注意到我的 ~/.irbrc 中需要 'utility-belt'。注释掉这一行使得 irb 和脚本/控制台只产生了 ~/.irb-history。将它放回创建和填充的 ~/.irb_history 中,其中包含 ~/.irb-history 中的所有内容。
  • 是的,这些历史记录的工作方式是在启动时读取它们,在会话期间累积,然后将 maxlines 行数写回。如果您启动 irb/console 的一个会话,执行一些操作,然后在另一个窗口中启动不同的会话,则第二个会话将以与第一个会话启动时相同的历史记录开始。它不会包含您在第一次会话中输入的命令。
  • @Qqwy 我也注意到了这种奇怪的不一致!我已经用我的发现更新了我原来的问题。 tl;博士您几乎可以肯定使用rvm,这就是为什么您使用连字符而不是下划线。
【解决方案2】:

有许多工具可以帮助改善 irb 体验。 Bondhirb 很有希望。

这里是 Comprehensive list of Irb Toolssome tips 直接编辑 .irbrc 文件。

希望对您有所帮助!

【讨论】:

  • 不知道为什么我被否决了。我不认为我的回答无关紧要。
  • 改善 IRB 体验仅与关闭历史记录无关。您提供的链接没有回答问题。
【解决方案3】:

虽然我通过谷歌得到了一个非常古老的问题。 事实证明,RVM 随着时间的推移略有变化。 目前我的 IRB 历史记录(使用 rvm)存储在这里:

user@host:~$ ls ~/.rvm/rubies/ruby-2.4.2/.irbrc*
/home/user/.rvm/rubies/ruby-2.4.2/.irbrc
/home/user/.rvm/rubies/ruby-2.4.2/.irbrc_history

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 2020-11-10
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    相关资源
    最近更新 更多