Domanda

IRB può scrivere la storia dei comandi su un file, ma lo fa solo questo, quando i tuoi IRB termine della sessione.

vorrei scrivere la mia cronologia dei comandi più frequentemente:. Più spesso su tutti i comandi (come la storia shell), ma non deve essere così spesso

C'è un'impostazione .irbrc per questo? Oppure dovrò incidere la fonte IRB ...

È stato utile?

Soluzione

Dopo aver hackerato in tempo una relazione molti IRB, buona fortuna con una soluzione pulita. Invece io consiglierei RIPL , un'alternativa IRB. Per impostazione predefinita consente di risparmiare storia più intelligente (cioè anche quando si esce bruscamente con Control-D).

Se si vuole la storia di scrittura dopo ogni comando, è facile con RIPL dal momento che è costruito per essere esteso con i plugin:

# 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

Altri suggerimenti

Da qui: 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top