irbは、ファイルにコマンド履歴を書き込むことができますが、irbセッションが終了したときにのみこれを行います。ファイルにirb履歴を頻繁にフラッシュする
私はコマンドの履歴をより頻繁に書きたいと思っています。すべてのコマンド(シェルの履歴のような)に頻繁に書きますが、あまり頻繁である必要はありません。
これには.irbrc設定がありますか?または私はここから...
irbは、ファイルにコマンド履歴を書き込むことができますが、irbセッションが終了したときにのみこれを行います。ファイルにirb履歴を頻繁にフラッシュする
私はコマンドの履歴をより頻繁に書きたいと思っています。すべてのコマンド(シェルの履歴のような)に頻繁に書きますが、あまり頻繁である必要はありません。
これには.irbrc設定がありますか?または私はここから...
はきれいな解決策と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
をIRBソースをハックする必要があります: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