当我运行
rails c
并在 irb 启动时按向上键时,我可以看到当我的应用程序在遇到 ruby-debug gem 的 debugger
命令后下降到 irb 时输入的最后命令。我不仅想清除这些命令,而且希望 rails c
能够提取我在上次 Rails 控制台会话期间发出的最后命令。我认为它曾经这样做过,但我不确定发生了什么变化。如果有帮助的话,我在 Mac OS 10.6.5 上使用 ruby 1.8.7 和 Rails 3.0.3。
Ray's answer 在此期间帮助了我。最近,我做了更多挖掘以了解更多信息,并意识到存在许多相互冲突的问题。
IRB 检查您是否有
~/.irbrc
,如果没有,则返回到 /etc/irbrc
,如 Ray 提到的。但是,如果您使用 rvm
,则需要考虑另一个文件 ~/.rvm/scripts/irbrc
,它只会加载 ~/.rvm/scripts/irbrc.rb
(注意 .rb
),如果您在 rvm_path
中设置了 ENV
(如果使用 ,则应该这样做) rvm
)。
有趣的是,虽然
~/.rvm/scripts/irbrc.rb
是基于 /etc/irbrc
的,但它们并不相同,并且在一些方面有所不同。检测系统上正在使用哪个文件的最明显和最简单的方法是其历史文件的名称。如果使用 /etc/irbrc
,您的历史文件将为 ~/.irb_history
,而 rvm
的文件为 ~/.irb-history
(注意:_
与 -
)。
希望这些附加信息将帮助您确定根据需要设置系统所需的内容。
我已经停止使用
debugger
并已转向 pry-byebug
,其中包括 pry
gem。 Pry 是 IRB 的替代品,但也可以与 IRB 一起使用或在 IRB 内部使用。我之所以能够提供上述更新,是因为我试图找出如何将它们各自的历史分开。有关更多信息,请参阅我对SO问题的回答“为什么撬动历史记录会破坏irb历史记录?”。我在那里提供了 Pry 已知的 Github 问题的链接以及我修复它的尝试。
我将您的问题解释为询问如何在 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
这些也可以在调试提示符下工作,但不是持久的。
事实证明,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