【问题标题】:frequently flush irb history to file经常刷新 irb 历史记录到文件
【发布时间】:2010-11-18 19:54:23
【问题描述】:

irb 可以将命令历史记录写入文件,但它仅在您的 irb 会话结束时才会这样做。

我想更频繁地写出我的命令历史记录:与每个命令一样频繁(如 shell 历史记录),但不必如此频繁。

有 .irbrc 设置吗?还是我必须破解 irb 源...

【问题讨论】:

    标签: ruby irb


    【解决方案1】:

    多次入侵 irb,祝你好运,有一个干净的解决方案。相反,我会推荐 ripl,一个 irb 替代品。默认情况下,它会更智能地保存历史记录(即,即使您使用 Control-D 突然退出)。

    如果您想在每个命令之后写入历史记录,使用 ripl 很容易,因为它可以通过插件进行扩展:

    # add to your ~/.riplrc
    module Ripl::ImmediateHistory
      # write to history after every eval
      def eval_input(input)
        super
        File.open(history_file, 'a') {|f| f.puts input }
      end
    
      # disable writing to history when ripl exits
      def write_history; end
    end
    Ripl::Shell.send :include, Ripl::ImmediateHistory
    

    【讨论】:

      【解决方案2】:

      从这里:http://blog.nicksieger.com/articles/2006/04/23/tweaking-irb

      module Readline
        module History
          LOG = "#{ENV['HOME']}/.irb-history"
      
          def self.write_log(line)
            File.open(LOG, 'ab') {|f| f << "#{line}
      "}
          end
      
          def self.start_session_log
            write_log("
      # session start: #{Time.now}
      
      ")
            at_exit { write_log("
      # session stop: #{Time.now}
      ") }
          end
        end
      
        alias :old_readline :readline
        def readline(*args)
          ln = old_readline(*args)
          begin
            History.write_log(ln)
          rescue
          end
          ln
        end
      end
      
      Readline::History.start_session_log
      

      【讨论】:

        猜你喜欢
        • 2011-01-05
        • 1970-01-01
        • 2015-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-23
        • 1970-01-01
        • 2013-05-27
        相关资源
        最近更新 更多