Pregunta

IRB puede escribir la historia de comandos en un archivo, pero sólo lo hace cuando finaliza la sesión del IRB.

Me gustaría escribir mi historial de comandos con más frecuencia:. Tan a menudo como en cada comando (como la historia de la cáscara), pero no tiene que ser tan a menudo

¿Hay un ajuste .irbrc para esto? O voy a tener que cortar la fuente IRB ...

¿Fue útil?

Solución

Después de haber hackeado en un tiempo muchos IRB, buena suerte con una solución limpia. En su lugar me gustaría recomendar RIPL , una alternativa IRB. Por defecto se guarda la historia de forma más inteligente (es decir, incluso cuando salga bruscamente con Control-D).

Si desea escribir la historia después de cada comando, es fácil con RIPL ya que está construido para ser ampliado con plugins:

# 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

Otros consejos

A partir de aquí: http://blog.nicksieger.com/articles / 2006/04/23 / pellizcar-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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top