【问题标题】:Rails console history command (via pry) -- can it be grepped or tailed?Rails 控制台历史命令(通过 pry)——它可以被 grepped 或 tailed 吗?
【发布时间】:2014-01-08 16:09:52
【问题描述】:

在 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 指定了jazz_hands gem撬)。 Pry 实际上有一个grep 功能,例如history --grep Nomination 会给我上面的第 1 行和第 3-6 行。它还具有tail 功能。这些记录在这里:https://github.com/pry/pry/wiki/History

【问题讨论】:

  • 实际上,pry 的历史命令是hist -- 我不确定history 究竟是一个合法的命令。
  • history 和 hist 是 pry 中的别名 :)

标签: ruby-on-rails history irb pry


【解决方案1】:

值得注意的是,如果您使用的是pry,那么历史文件将位于~/.pry_history。你也可能会遇到这个历史文件.byebug_history。

【讨论】:

    【解决方案2】:

    这可能就是你要找的东西:

    def search_history(filter)
        puts `cat ~/.irb-history | grep "#{filter}"`
    end
    

    【讨论】:

      【解决方案3】:

      您可以为此目的使用~/.irb-history。因此,可以使用以下方法(您必须知道如何执行此操作,但这仅供参考):

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

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


      更新:您可以使用以下逻辑访问变量中的历史记录(我花了一些时间来阅读 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 配置文件中,并在需要时随时使用它。

      【讨论】:

      • 您知道如何以更“Rubyish”的方式执行此操作吗?例如,从 rails 控制台直接操作这个history 命令?我没有看到我可以操作的对象被返回,这似乎很好。
      • 您想在脚本中还是在 irb 控制台中操作历史记录?
      • ...在 irb 控制台中
      • 我仍然想要一些方法来操纵 pry 的历史命令给我的任何东西。
      【解决方案4】:
      1. 转到 Rails 控制台

      2. 按<ctrl> + r 并键入命令的几个字母。

      3. 使用<ctrl> + r 选择与搜索匹配的其他命令

      4. 使用<ctrl> + <shift> + r选择反方向的命令

      与 bash shell 中的 <ctrl> + r 完全一样

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-20
        • 1970-01-01
        • 2016-01-13
        • 1970-01-01
        • 2013-11-06
        • 1970-01-01
        相关资源
        最近更新 更多