irb可以將命令歷史記錄寫入文件,但它僅在irb會話結束時執行此操作。頻繁將irb歷史刷新到文件
我想更頻繁地寫出我的命令歷史記錄:就像每個命令一樣(比如shell歷史記錄),但它不一定非常頻繁。
是否存在.irbrc設置?或者將我必須破解IRB源...
irb可以將命令歷史記錄寫入文件,但它僅在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