история IRB не работает - PullRequest
       9

история IRB не работает

14 голосов
/ 14 января 2010

в ~ / .irbrc у меня есть эти строки:

require 'irb/ext/save-history'
#History configuration
IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"

и все же, когда я запускаю irb и нажимаю стрелку вверх, ничего не происходит.также указанный файл истории irb не создается, и в него ничего не записывается.

Ответы [ 5 ]

20 голосов
/ 14 января 2010

irb history работает в Debian Linux из коробки. Там нет etc / irbrc, и при этом у меня нет ~ / .irbrc. Итак, хмммм.

Этот человек вложил в свой irbrc немного больше, чем вы. Вы думаете, что ARGV.concat может быть недостающим элементом?

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" 
11 голосов
/ 14 января 2010

У меня нет ответа для вас, почему вышеупомянутое не работает, но я нашел файл /etc/irbrc в моей системе (OS X - Snow Leopard, Ruby 1.8.7), который обеспечивает работу Настойчивая история для меня. Итак, два совета: i) проверьте ваш / etc / irbrc (или эквивалентный), чтобы убедиться, что там нет ничего, что могло бы помешать вашим настройкам, и ii) опробуйте настройки ниже, чтобы увидеть, можете ли вы получить история работает таким образом.

# 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
1 голос
/ 06 февраля 2010

Это известная ошибка с доступным патчем. Самое простое решение - переписать save-history.rb:

/ usr / lib / ruby ​​/ 1.8 / irb / ext / save-history.rb

с фиксированной версией:

http://pastie.org/513500

или сделать это за один раз:

wget -O /usr/lib/ruby/1.8/irb/ext/save-history.rb http://pastie.org/pastes/513500/download
0 голосов
/ 05 августа 2016

Это также может произойти, если у вас есть дополнительный файл конфигурации irb, например, ~/.irbrc. Если это так, скопируйте содержимое из ответа liwp в дополнительную конфигурацию, и оно должно работать.

0 голосов
/ 03 января 2012

Убедитесь, что вы создали ruby ​​с помощью libreadline, так как история с irb не работает без него.

...