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