Question
dans ~ / .irbrc j'ai ces lignes:
require 'irb/ext/save-history'
#History configuration
IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"
et pourtant quand je lance irb
et appuyez sur la flèche en haut, rien ne se passe. également le fichier d'historique irb spécifié ne se crée et rien est connecté à elle.
La solution
Je n'ai pas de réponse pour vous pourquoi le travail ne ci-dessus, mais j'ai trouvé un fichier, /etc/irbrc
sur mon système (OS X - Snow Leopard, Ruby 1.8.7) qui fournit un travail, persistant histoire pour moi. Donc, deux conseils: i) vérifier / etc / irbrc (ou équivalent) pour vous assurer qu'il n'y a rien là-dedans qui pourrait interférer avec vos paramètres, et ii) essayer les réglages ci-dessous pour voir si vous pouvez obtenir histoire de travail de cette façon.
# 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
Autres conseils
L'histoire fonctionne dans Debian irb Linux hors de la boîte. Il n'y a pas etc / irbrc, et je n'ai ~ / .irbrc. Donc, hmmmm.
Cette personne mettre un peu plus dans son irbrc que Tu l'as fait. Croyez-vous que le ARGV.concat pourrait être la pièce manquante?
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"
Ceci est un bug connu avec un patch disponible. solution pour remplacer les plus simples est de sauvegarde history.rb:
/usr/lib/ruby/1.8/irb/ext/save-history.rb
avec une version fixe:
ou de le faire en une seule fois:
wget -O /usr/lib/ruby/1.8/irb/ext/save-history.rb http://pastie.org/pastes/513500/download
Vérifiez que vous avez construit avec rubis libreadline l'histoire semble fonctionner irb pas sans elle.
Cela peut également se produire si vous avez le fichier de configuration supplémentaire RIR, par exemple ~/.irbrc
. Si tel est le cas, copiez le contenu de la réponse de liwp à la configuration supplémentaire et il devrait fonctionner.