经常将irb历史记录刷新到文件

irb可以将命令历史记录写入文件,但只有在irb会话结束时才会执行此操作。

我想更频繁地写出我的命令历史记录:与每个命令(如shell历史)一样频繁,但它不必经常这样。

是否有.irbrc设置? 或者我将不得不破解irb源…

多次攻击irb,祝你有一个干净的解决方案。 相反,我推荐ripl ,一种替代品。 默认情况下,它会更智能地保存历史记录(即使您突然退出Control-D)。

如果你想在每个命令之后编写历史记录,那么使用ripl很容易,因为它是用插件扩展的:

# 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 

从这里: 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