irb 可以将命令历史记录写入文件,但它仅在您的 irb 会话结束时执行此操作。
我想更频繁地写出我的命令历史记录:与每个命令一样频繁(如 shell 历史记录),但不必如此频繁。
有 .irbrc 设置吗?还是我必须破解 irb 源...
多次入侵 irb,祝你好运,有一个干净的解决方案。相反,我会推荐ripl,一种 irb 替代品。默认情况下,它会更智能地保存历史记录(即,即使您使用 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