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.
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:
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.