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.

Était-ce utile?

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:

http://pastie.org/513500

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top