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 ...
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