Domanda

in ~ / .irbrc ho queste linee:

require 'irb/ext/save-history'
#History configuration
IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"

ma quando ho eseguito irb e ha colpito la freccia non succede nulla. anche il file di cronologia IRB specificato non è sempre crea e nulla viene registrato ad esso.

È stato utile?

Soluzione

Non ho una risposta per voi il motivo per cui quanto sopra non funziona, ma ho trovato un file, /etc/irbrc sul mio sistema (OS X - Snow Leopard, Ruby 1.8.7), che fornisce un lavoro, persistente la storia per me. Così due consigli: i) controllare il vostro / etc / irbrc (o equivalente) per assicurarsi che non ci sia qualcosa là dentro che potrebbe interferire con le impostazioni, e ii) provare le impostazioni di seguito per vedere se è possibile ottenere la storia di lavoro in questo modo.

# 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

Altri suggerimenti

storia IRB lavora in Debian Linux fuori dalla scatola. Non c'è etc / irbrc, né ho un ~ / .irbrc. Così, Hmmmm.

Questa persona mettere un po 'di più nel suo irbrc di hai fatto. Pensi che l'ARGV.concat potrebbe essere il pezzo mancante?

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" 

Questo è un bug noto con una patch disponibili. soluzione più semplice è quella di sovrascrivere salvataggio-history.rb:

/usr/lib/ruby/1.8/irb/ext/save-history.rb

con una versione fissa:

http://pastie.org/513500

o di farlo in un colpo solo:

wget -O /usr/lib/ruby/1.8/irb/ext/save-history.rb http://pastie.org/pastes/513500/download

Controllare per assicurarsi che hai costruito rubino con libreadline come la storia IRB sembra non funzionare senza di essa.

Questo può succedere anche se si dispone di più file di configurazione IRB, per esempio ~/.irbrc. Se questo è il caso, copiare il contenuto da risposta di liwp alla configurazione in più e dovrebbe funzionare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top