Pregunta

en ~ / .irbrc tengo estas líneas:

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

y, sin embargo cuando funciono irb y pulsa la flecha hacia arriba no pasa nada. También el archivo histórico de IRB especificado no se está creado y no se registra nada a ella.

¿Fue útil?

Solución

No tengo una respuesta para usted por qué el anterior no funciona, pero encontré un archivo, /etc/irbrc en mi sistema (OS X - Snow Leopard, Ruby 1.8.7) que proporciona un trabajo, persistente la historia para mí. Así que dos consejos: i) comprobar su / etc / irbrc (o equivalente) para asegurarse de que no hay nada ahí que pudiera interferir con su configuración, y ii) probar los ajustes siguientes para ver si se puede conseguir la historia de trabajo de esa manera.

# 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

Otros consejos

historia IRB funciona en Debian Linux fuera de la caja. No hay etc / irbrc, ni tengo un ~ / .irbrc. Así, hmmmm.

Esta persona poner un poco más en su irbrc de lo hiciste. ¿Crees que la ARGV.concat podría ser la pieza que falta?

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" 

Esto es un error conocido con un parche disponible. La solución más fácil es para sobrescribir save-history.rb:

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

con una versión fija:

http://pastie.org/513500

o de hacerlo de una sola vez:

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

Asegúrese de que usted construyó rubí con libreadline como la historia IRB parece no funcionar sin él.

Esto también puede ocurrir si tiene el archivo de configuración IRB adicional, por ejemplo, ~/.irbrc. Si este es el caso, copie el contenido de la respuesta de liwp a la configuración adicional y que debería funcionar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top