IRB historia con frecuencia a ras de archivo
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 ...
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