Frage

irb kann Befehl Geschichte in eine Datei schreiben, aber es funktioniert nur, wenn dies Ihre irb Sitzung beendet.

Ich möchte meine Befehl Geschichte häufiger schreiben. So oft wie bei jedem Befehl (wie Shell Geschichte), aber es muss nicht so oft sein

Gibt es eine .irbrc Einstellung dafür? Oder muss ich die irb Quelle hacken ...

War es hilfreich?

Lösung

Nachdem auf irb manches Mal, viel Glück mit einer sauberen Lösung gehackt. Stattdessen würde ich RIPL , eine irb Alternative empfehlen. Standardmäßig speichert sie Geschichte intelligenter (das heißt, auch wenn Sie abrupt beenden heraus mit gedrückter Ctrl-D).

Wenn Sie nach jedem Befehl zu schreiben Geschichte wollen, ist es einfach, mit RIPL, da es gebaut ist mit Plugins erweitert werden:

# 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

Andere Tipps

Von hier: 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top