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.

War es hilfreich?

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:

http://pastie.org/513500

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top