Frage
in ~ / .irbrc Ich habe diese Zeilen:
require 'irb/ext/save-history'
#History configuration
IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"
und doch, wenn ich irb
laufen und traf der Pfeil nach oben nichts passiert. auch die irb History-Datei angegeben wird, nicht immer erstellt und nichts wird es protokolliert.
Lösung
Ich habe keine Antwort für Sie haben, warum die oben nicht funktioniert, aber ich habe eine Datei, /etc/irbrc
auf meinem System (OS X - Snow Leopard Ruby 1.8.7) finden, die eine Arbeits liefert, persistent Geschichte für mich. So zwei Ratschläge: i) Überprüfen Sie die Datei / etc / irbrc (oder gleichwertig), um sicherzustellen, dass es nichts drin, dass mit Ihren Einstellungen stören könnten, und ii) versuchen, die Einstellungen unten, um zu sehen, ob Sie bekommen können Geschichte arbeitet auf diese Weise.
# Some default enhancements/settings for IRB, based on
# http://wiki.rubygarden.org/Ruby/page/show/Irb/TipsAndTricks
unless defined? ETC_IRBRC_LOADED
# Require RubyGems by default.
require 'rubygems'
# Activate auto-completion.
require 'irb/completion'
# Use the simple prompt if possible.
IRB.conf[:PROMPT_MODE] = :SIMPLE if IRB.conf[:PROMPT_MODE] == :DEFAULT
# Setup permanent history.
HISTFILE = "~/.irb_history"
MAXHISTSIZE = 100
begin
histfile = File::expand_path(HISTFILE)
if File::exists?(histfile)
lines = IO::readlines(histfile).collect { |line| line.chomp }
puts "Read #{lines.nitems} saved history commands from '#{histfile}'." if $VERBOSE
Readline::HISTORY.push(*lines)
else
puts "History file '#{histfile}' was empty or non-existant." if $VERBOSE
end
Kernel::at_exit do
lines = Readline::HISTORY.to_a.reverse.uniq.reverse
lines = lines[-MAXHISTSIZE, MAXHISTSIZE] if lines.nitems > MAXHISTSIZE
puts "Saving #{lines.length} history lines to '#{histfile}'." if $VERBOSE
File::open(histfile, File::WRONLY|File::CREAT|File::TRUNC) { |io| io.puts lines.join("\n") }
end
rescue => e
puts "Error when configuring permanent history: #{e}" if $VERBOSE
end
ETC_IRBRC_LOADED=true
end
Andere Tipps
irb Geschichte Werke in Debian Linux aus dem Kasten heraus. Es gibt keine etc / irbrc, noch habe ich eine ~ / .irbrc. Also, hmmmm.
Diese Person ein bisschen mehr in seine irbrc setzen als du machtest. Nehmen Sie an der ARGV.concat könnte das fehlende Stück sein?
require 'irb/completion'
require 'irb/ext/save-history'
ARGV.concat [ "--readline", "--prompt-mode", "simple" ]
IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"
Dies ist ein bekannter Fehler mit einem Patch zur Verfügung. Einfachste Lösung ist, save-history.rb zu überschreiben:
/usr/lib/ruby/1.8/irb/ext/save-history.rb
mit einer festen Version:
oder es in einem Rutsch zu tun:
wget -O /usr/lib/ruby/1.8/irb/ext/save-history.rb http://pastie.org/pastes/513500/download
Überprüfen Sie, ob Sie gebaut Ruby mit libreadline als irb Geschichte scheint, ohne sie nicht arbeiten.
Dies kann auch passieren, wenn Sie zusätzliche irb Konfigurationsdatei haben, z.B. ~/.irbrc
. Wenn dies der Fall ist, kopieren Sie den Inhalt von liwp Antwort auf die zusätzliche Konfiguration und es sollte funktionieren.