ruby-on-rails - Rails 控制台历史命令(通过 pry)——它可以被 grepped 或 tailed 吗?

标签 ruby-on-rails history irb pry

在 Rails 4 rails console 中,我可以输入 history,它的行为就像来自 bash shell 的 history 命令。例如。:

[25] my_rails_project »  history
  1: Nomination
  2: {:ad => "asdfsdasadf"}
  3: Nomination.count
  4: Nomination.count.to_sql
  5: Nomination.all.class
  6: Nomination.all.to_sql
  ...

有没有办法搜索该历史记录,例如history | grep Nomination ?尾部呢?

注意:当我最初写这个问题时,我认为 history 命令来自 Rails 本身,但它来自我系统中的 pry gem(我的 Gemfile 指定了拉入 pry 的 jazz_hands gem)。 Pry 实际上具有 grep 功能,例如history --grep Nomination 会给我上面的第 1 行和第 3-6 行。它还具有 tail 功能。这些记录在此处:https://github.com/pry/pry/wiki/History

最佳答案

为此,您可以使用 ~/.irb-history。因此,可以使用以下内容(您必须知道如何执行此操作,但这仅供引用):

tail -fn0 ~/.irb-history  # for tailing
cat ~/.irb-history | grep something # for searching

请注意,您可能同时拥有两个文件: ~/.irb-history~/.irb_history ,其中任何一个都可以比另一个更新。我还没有能够解开这个谜团。因此,请使用您认为更适合自己的那个。

UPDATE :您可以使用以下逻辑访问变量中的历史记录(我花了一段时间阅读 Pry 使用的代码,在 pry 中尝试 edit history):
 def pry_history
   arr = []
   history = Pry::History.new
   history.send(:read_from_file) do |line|
     arr.push line.chomp
   end
   arr
 end

现在,您可以简单地调用 pry_history 来获取一组 pry 的历史记录。您可以进一步将其保存在 .pryrc 配置文件中,并在需要时随时使用。

关于ruby-on-rails - Rails 控制台历史命令(通过 pry)——它可以被 grepped 或 tailed 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20692742/

相关文章:

Javascript,删除历史记录中的最后一项(firefox插件)

linux - 如何在不记录历史记录的情况下在 bash 中执行命令?

ruby-on-rails - 为什么 Date.today 在 Ruby 控制台 (irb) 上不起作用?

ruby-on-rails - ruby 空值表达式

ruby-on-rails - Stripe 托管帐户 - 错误的国家/地区

mysql - Rails 应用程序卡在 mysql_ping 中

javascript - .back 和 .pushState - 两个历史的故事

ruby - IRB 使用什么来确定如何表示返回的实例?

javascript - 提交 rails 后关闭模态

ruby-on-rails - Rails 4 - thinking-sphinx 日期范围