Question

irb peut écrire l'historique des commandes dans un fichier, mais il ne fait que quand votre session se termine RIR.

Je voudrais écrire plus souvent l'histoire de ma commande:. Aussi souvent que sur chaque commande (comme historique du shell), mais il ne doit pas être si souvent

Y at-il un cadre .irbrc pour cela? Ou vais-je devoir pirater la source ... irb

Était-ce utile?

La solution

Après avoir piraté irb beaucoup de temps d'une, bonne chance avec une solution propre. Au lieu de cela, je vous recommande RIPL , une alternative irb. Par défaut, il enregistre l'histoire de façon plus intelligente (par exemple, même lorsque vous sortez brusquement avec Control-D).

Si vous voulez l'histoire d'écriture après chaque commande, il est facile avec RIPL car il est conçu pour être étendu avec des plugins:

# add to your ~/.riplrc
module Ripl::ImmediateHistory
  # write to history after every eval
  def eval_input(input)
    super
    File.open(history_file, 'a') {|f| f.puts input }
  end

  # disable writing to history when ripl exits
  def write_history; end
end
Ripl::Shell.send :include, Ripl::ImmediateHistory

Autres conseils

A partir de là: http://blog.nicksieger.com/articles / 2006/04/23 / peaufinage- irb

module Readline
  module History
    LOG = "#{ENV['HOME']}/.irb-history"

    def self.write_log(line)
      File.open(LOG, 'ab') {|f| f << "#{line}
"}
    end

    def self.start_session_log
      write_log("
# session start: #{Time.now}

")
      at_exit { write_log("
# session stop: #{Time.now}
") }
    end
  end

  alias :old_readline :readline
  def readline(*args)
    ln = old_readline(*args)
    begin
      History.write_log(ln)
    rescue
    end
    ln
  end
end

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